T-SQL将NULL分配给文本类型字段

问题描述:

我尝试执行下一个代码以将所有空字符串替换为NULL,其中列类型为TEXT。但是这段代码似乎什么都不做。T-SQL将NULL分配给文本类型字段

UPDATE mytable SET textField = NULL WHERE DATALENGTH(textField)=0 

什么是这里为null此列正确的方式?

UPD。好的,这真的很有用。这只是奇怪的数据显示Embarcadero DBArtasian

+1

这应该工作。大概你没有任何真正的空弦。 – 2012-03-16 14:05:43

+0

你的餐桌名是'table'吗?你应该把方括号括起来,就像这样:'[table]' – Jeff 2012-03-16 14:06:49

+0

@Jeff它只是例如,不是真实的名字 – nahab 2012-03-16 14:07:20

你的方式是正确的。 和CAST和RTRIM一起玩,也许你在场上有一些空间。

probabily WHERE条件不返回任何

尝试做做下面来看看有多少纪录将受到影响

SELECT * from Table WHERE DATALENGTH(textField)=0 

UPDATE mytable 
SET textField = NULL 
WHERE LEN(LTRIM(RTRIM(textField))) = 0 
+4

问题的更新你不能在'text'列上使用任何这些函数。因为'LEN'忽略尾部空间,所以不需要修剪。 – 2012-03-16 14:18:18

+0

你是对的。我错过了这个问题。 – Vinnie 2012-03-16 20:03:03

请转换文本字段为varchar,因为LEN不能用于文本字段。这为我工作

UPDATE MYTABLE SET文本框= NULL WHERE LEN(转换(VARCHAR(1000),文本框))= 0