【发布时间】:2017-01-30 21:16:09
【问题描述】:
我的 SQL Server 2008 数据库中有一个包含 c/o Full Name 的列。我在区分名字和姓氏时遇到问题。我在自己的列中有 c/o,但我需要名字/姓氏。我知道第二个和第三个 case 语句存在问题,但我不确定我需要更改什么。我应该将索引变量存储在某处以引用它们吗?
Declare @t table ( [name] varchar(100) )
INSERT INTO @t ( Name )
SELECT Street1 FROM tblPeople
WHERE CO = 'Y' AND LastName NOT LIKE 'SUMMERHAVEN INC' AND Street1 Like '%c/o%'
SELECT
[name],
CHARINDEX(' ', [name]),
CASE WHEN CHARINDEX(' ', [name]) > 0 THEN
LEFT([name],CHARINDEX(' ',[name])-1)
ELSE
[name]
END as CO,
CASE WHEN CHARINDEX(' ', [name]) > 0 THEN
SUBSTRING([name],CHARINDEX(' ',[name])+1, ( LEN([name]) - CHARINDEX(' ',[name])+1) )
ELSE
NULL
END as FIRST_NAME,
CASE WHEN CHARINDEX(' ', [name]) > 0 THEN
SUBSTRING([name],CHARINDEX(' ',[name])+1, ( LEN([name]) - CHARINDEX(' ',[name])+1) )
ELSE
NULL
END as LAST_NAME
FROM @t
【问题讨论】:
-
看起来像 SQL Server?哪个版本?
-
@HartCO 我在问题中添加了版本,但它是SQL Server 2008。
-
一些样本数据怎么样?我们没有你的桌子 tblPeople。
-
@SeanLange 一个名字的例子是
c/o Sara Schultz
标签: sql sql-server sql-server-2008 parsing