【问题标题】:Dividing one column into two columns in SQL [duplicate]在SQL中将一列分为两列[重复]
【发布时间】:2011-11-02 18:04:08
【问题描述】:

可能重复:
Splitting one column into two columns in SQL Server CE

我正在用 VS2010 做一个项目使用 C#。

我有一个本地数据库(.sdf 文件)。这是我的数据库的示例内容:

第 1 列

Frodo Baggins
Samwise Gamgee
Peregrin Took
Meriadoc Brandybuck
.
.
.

我要做的是将姓名和姓氏分成两个不同的列,如下所示:

名字 姓氏

Frodo             Baggins
Samwise           Gamgee
Peregrin          Took
Meriadoc          Brandybuck
.                 .
.                 .
.                 .

由于我使用的是 SQL Server CE 3.5 版,因此 LEFT、MID 函数对我不起作用。那么,我该怎么做呢?

【问题讨论】:

  • 为什么你有 C# 标签?你想在你的应用程序中拆分它还是只需要一个查询?
  • 我想在我的 C# 项目中使用一个查询,这就是我放置该标签的原因。
  • 它们几乎一模一样,我敢打赌这是一个家庭作业问题
  • @Erik Philips 这个 OP 提出的另一个问题 :)
  • 我更新了这个问题,这就是我再次问它的原因。我更正了表格。

标签: c# sql split sql-server-ce


【解决方案1】:

试试这个:

DECLARE @YourTable table (Column1  varchar(50))
INSERT @YourTable VALUES ('Frodo Baggins')
INSERT @YourTable VALUES ('Samwise Gamgee')
INSERT @YourTable VALUES ('Peregrin Took')
INSERT @YourTable VALUES ('Meriadoc Brandybuck')
INSERT @YourTable VALUES ('aa')
INSERT @YourTable VALUES ('aa bb cc')

SELECT
    LEFT(Column1,CHARINDEX(' ',Column1)) AS Names
    ,RIGHT(Column1,LEN(Column1)-CHARINDEX(' ',Column1)) AS Surnames
    FROM @YourTable

--both queries produce same output
SELECT 
    SUBSTRING(Column1, 0, CHARINDEX(' ', Column1))
    ,SUBSTRING(Column1, CHARINDEX(' ',Column1) + 1, LEN(Column1)) 
FROM @YourTable

输出:

Names       Surnames
----------- -------------
Frodo       Baggins
Samwise     Gamgee
Peregrin    Took
Meriadoc    Brandybuck
            aa
aa          bb cc

(6 row(s) affected)

【讨论】:

  • SQL Server Compact Edition 有CHARINDEXLENSUBSTRING,所以第二个查询应该可以正常工作。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-12-16
  • 1970-01-01
  • 1970-01-01
  • 2015-06-20
  • 2018-02-05
  • 2021-01-23
  • 2014-03-28
相关资源
最近更新 更多