2011-11-02 39 views
0

我正在使用C#与VS2010 做一个项目。在SQL Server CE中将一列分为两列

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

列1

Ned Stark 
Tyrion Lannister 
Daenerys Targaryen 
Robert Baratheon 

我所试图做的是分裂名字和姓氏为两个不同的列,就像这样:

名称                                               姓氏

Ned    Stark 
Tyrion   Lannister 
Daenerys   Targaryen 
Robert   Baratheon 

由于我使用的SQL Server CE 3.5版,左,MID的功能并没有为我工作。那么,我该怎么做?

+0

问题“[将一列分成两列在SQL](http://stackoverflow.com/questions/7985147/dividing-one-column-into-two-columns-in-sql )“很像这个问题,但在一个小时后询问。 – norlando

回答

2

这应该工作。

SELECT SUBSTRING([Name], 0, CHARINDEX(' ', [Name], 0)) [FirstName], 
     SUBSTRING([Name], CHARINDEX(' ', [Name], 0) + 1, LEN([Name])) [LastName] 

编辑:

SELECT SUBSTRING([Name], 0, CHARINDEX(' ', [Name], 0)) [FirstName], 
     SUBSTRING([Name], CHARINDEX(' ', [Name], 0) + 1, LEN([Name])) [LastName] 
FROM 
(
    SELECT 'Ned Stark' [Name] UNION 
    SELECT 'Tyrion Lannister' [Name] UNION 
    SELECT 'Daenerys Targaryen' [Name] UNION 
    SELECT 'Robert Baratheon' [Name] 
) n 

从你的表和列[名称]与你列之后只需更换一部分。

+0

您的查询从语句中缺失。尽管我在查询结尾添加了“From mytable”,但它不起作用。它什么都没做。 – user733452

+0

如果您按原样运行我的编辑部分,则应该看到您的结果问题。 – norlando

+0

我们的专栏至少有一百个名字,不仅有四个。所以,从编辑部分的声明对我来说是有问题的。我该怎么办? – user733452

1

您可以结合使用CHARINDEX和SUBSTRING功能。根据msdn,它们都支持CE。

例子:

SELECT 
    SUBSTRING(a, 0, CHARINDEX(' ', a)), 
    SUBSTRING(a, CHARINDEX(' ',a) + 1, LEN(a)) 
FROM 
    (SELECT 'Random Joe' as a) t 
+0

当我运行您的查询时,出现以下错误:解析查询时出现错误。 [令牌行号,令牌行偏移,令牌出错,] – user733452