我使用的是sql server 2008 r2。 当一个人以两种不同的格式将数据输入数据库时,问题就出现了。
该表格为:(您可以注意到“标题”列中有FName
和LName
,但它应分别位于FName
和LName
列。< / p>
Title FirstName LastName
-------------------------------------------------------------------
Prasident Ena Enic null null *(not ok)*
Prasident Hana Hanic *(ok)*
Prasident Jack Johnson null null *(wrong)*
所以我使用下面的代码将Title中的字符串分成3部分(Title
,SFirstName
和SLastName
)。
ltrim(SUBSTRING (title ,CHARINDEX(' ', title)+1,
charindex(' ',title+' ',charindex(' ',title)+1)-charindex(' ',title)-1)),
ltrim(substring(title, charindex(' ',title,charindex(' ',title)+1), len(title)))
我得到了这种类型的od表。
SplittedTitle SplittedFirstName SplittedLastName FirstName LastName
-------------------------------------------------------------------------------
Prasident Ena Enic null null
Prasident Prasident Prasident Hana Hanic
Prasident Jack Johnson null null
现在我在FirstName
和LastName
中遇到空值问题。如何传输正确的数据(来自SplittedFirstName和SplittedLastName)而不是空值。我希望有人明白我的问题是什么。
任何人都有任何想法? 我应该使用哪种功能以及如何使用?
答案 0 :(得分:0)
我想你想要更新。您可以使用可更新的CTE执行此操作:
with toupdate as (
<your query here>
)
update toupdate
set FirstName = SplittedFirstName,
LastName = SplittedLastName
where FirstName is null and LastName is null;
答案 1 :(得分:0)
答案 2 :(得分:0)
现在您需要做的就是在结果表上运行更新
UPDATE tablename
SET
FirstName = case when SplittedTitle <> SplittedFirstName
then SplittedFirstName end,
LastName = case when SplittedTitle <> SplittedLastName
then SplittedLastName end