我使用更新语句将任何Null或空字符串值替换为" No Cost Center"。我导入到表中的数据有很多空白/空字符串值,当我运行下面的代码时,它会影响0行:
Update [dbo].[Import_tbl_Inventory] Set [dbo].[Import_tbl_Inventory].[User Defined Label 4] = 'No Cost Center'
Where [dbo].[Import_tbl_Inventory].[User Defined Label 4] is Null or [dbo].[Import_tbl_Inventory].[User Defined Label 4] = ''
我需要检查除NULL和空字符串值以外的其他内容吗?
编辑:
经过进一步审核,我决定右键单击该表并选择Edit top Rows
。在这里,我发现User Defined Label 4
列中的每一行实际上都包含空格。我能够手动删除前两行中的空格,但之后的任何行都会给我一条消息Data in row was not committed. The row values updated or deleted either do not make to the row unique or they alter multiple rows
我一次只改变一行,并且没有理由这与使行唯一有关。现在确定这里发生了什么。
答案 0 :(得分:1)
A"空白" string可以是空白字符的非空字符串,可能不容易在视觉上区分空字符串。根据您的查看方式,也许不是来自NULL
。要在更新中包含具有此类值的行,您可以在与空字符串进行比较之前修剪它们:
Update [dbo].[Import_tbl_Inventory]
Set [dbo].[Import_tbl_Inventory].[User Defined Label 4] = 'No Cost Center'
Where [dbo].[Import_tbl_Inventory].[User Defined Label 4] is Null
or RTRIM([dbo].[Import_tbl_Inventory].[User Defined Label 4]) = ''
您可以使用LTRIM()
而不是您喜欢的,但是您不需要两者,因为如果字符串只包含空格,那么将其传递给LTRIM()
或RTRIM()
将会产生一个空字符串。
答案 1 :(得分:0)
您可以在列中尝试LTRIM
和RTRIM
并检查LEN
Update [dbo].[Import_tbl_Inventory] Set
[dbo].[Import_tbl_Inventory].[User Defined Label 4] = 'No Cost Center'
Where
LEN(RTRIM(LTRIM(ISNULL([dbo].[Import_tbl_Inventory].[User Defined Label 4],''))))=0
您可以使用REPLACE
Update [dbo].[Import_tbl_Inventory] Set
[dbo].[Import_tbl_Inventory].[User Defined Label 4] = 'No Cost Center'
Where
LEN(REPLACE(ISNULL( [dbo].[Import_tbl_Inventory].[User Defined Label 4],''),' ',''))=0
答案 2 :(得分:0)
没有或
的小清洁工Update [dbo].[Import_tbl_Inventory] Set [dbo].[Import_tbl_Inventory].[User Defined Label 4] = 'No Cost Center'
Where len(isNull([dbo].[Import_tbl_Inventory].[User Defined Label 4], '')) = 0
答案 3 :(得分:0)
您需要检查标签和换行等不可打印的字符