我的情景是我有下表 -
FullName ManufacturingCost
------------------------------------------
Harry Singh Malhotra $200.00
Harry $200.00
Danny $200.00
Britany Krout $100.00
现在我需要上表中的两列 - fullName
和FirstName
。我正在使用此查询:
Select
fullName, left(fullName, charindex(' ', fullName, 1) - 1) as firstName
from
Table1
上述查询中的问题是,在第二行和第三行Firstname
作为Null
返回,因为charindex
在这些行中找不到' '
。< / p>
我希望结果为:
FullName FirstName
-------------------------------------
Harry Singh Malhotra Harry
Harry Harry
Danny Danny
Britany Krout Britany
有人可以帮我告诉我如何在声明中添加条件
select * from Table11
因为我想检查特定列中每个值的条件。
选择案例不起作用,因为它只需要标量值。
答案 0 :(得分:2)
使用Case Statement
处理FullName
,但没有Middlename
或LastName
SELECT fullName,
First_Name=LEFT(( fullName ), CASE
WHEN Charindex(' ', fullName) = 0 THEN Len(fullName)
ELSE Charindex(' ', fullName)
END)
FROM Table1
ParseName
技巧也可以,但你的字符串应该最多4个字。
SELECT fullName,
First_Name=Reverse(Parsename(Replace(Reverse(fullName), ' ', '.'), 1))
FROM table1