需要将列拆分为两个

时间:2012-04-11 15:01:06

标签: c# asp.net sql-server wcf

我有一个WCF服务。

我有一个字段(比如姓名),现在客户想要将其更改为FirstName(空格前的前半部分)和LastName(空格后的所有内容)。

这个WCF服务正被不同的应用程序使用,我希望在不破坏任何现有客户端的情况下完成此任务。

即使它们在数据库中不存在,我可以添加两个新的数据库吗?如何为这两个新数据库设置或获取值?

谢谢

2 个答案:

答案 0 :(得分:5)

这样的事情应该有效:

DECLARE @FullName VARCHAR(255)
SET @FullName = 'James Johnson'

SELECT SUBSTRING(@FullName, 1, CHARINDEX(' ', @FullName) - 1) AS FirstName,
       SUBSTRING(@FullName, CHARINDEX(' ', @FullName) + 1, LEN(@FullName)) AS LastName

上面的输出如下所示:

FirstName    LastName
------------ ----------------
John         Doe

要在代码中解析名称,下面的代码示例应该适用于名字和姓氏。如果您需要一个可以处理前缀,后缀和中间名称的强大解析器,请查看this article

var names = ("James Johnson").Split(Convert.ToChar(" "));
if (names.Length > 0)  
    Response.Write(string.Format("First: {0}, Last: {1}", names[0], names[1]));

答案 1 :(得分:1)

如果新数据成员是字符串,那么这应该没问题,旧版本的服务客户端将忽略其他数据成员。

请参阅此相关问题: Adding field to WCF data contract breaks clients?