【问题标题】:Splitting one column into two columns in SQL Server CE在 SQL Server CE 中将一列拆分为两列
【发布时间】:2011-11-02 16:49:30
【问题描述】:

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

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

第 1 列

Ned Stark
Tyrion Lannister
Daenerys Targaryen
Robert Baratheon

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

名字 姓氏

Ned               Stark
Tyrion            Lannister
Daenerys          Targaryen
Robert            Baratheon

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

【问题讨论】:

标签: c# sql visual-studio-2010 split sql-server-ce


【解决方案1】:

这应该可行。

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

只需将 from 之后的部分替换为您的表,并将列 [Name] 替换为您的列。

【讨论】:

  • 语句中缺少您的查询。虽然我在您的查询末尾添加了“From mytable”,但它不起作用。它什么也没做。
  • 如果您按原样运行我的编辑部分,您应该会看到问题的结果。
  • 我们的专栏中至少有一百个名字,而不仅仅是四个。所以,从编辑部分的声明对我来说是有问题的。我该怎么办?
  • @user733452 - 你对上一个问题是认真的吗?,答案的FROM 部分只是一个例子,显然它应该被你的表替换。
  • 是的,我是认真的。我应该以这种方式写一百行。我不仅有 4 行。
【解决方案2】:

您可以结合使用 CHARINDEX 和 SUBSTRING 函数。根据msdn,它们都在 CE 中受支持。

例子:

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

【讨论】:

  • 当我运行您的查询时,我收到以下错误:解析查询时出错。 [Token line number,Token line offset,,Token in error,,]
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多