2012-03-16 91 views
0

我嘗試執行下一個代碼以將所有空字符串替換爲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

回答

2

你的方式是正確的。 和CAST和RTRIM一起玩,也許你在場上有一些空間。

0

probabily WHERE條件不返回任何

嘗試做做下面來看看有多少紀錄將受到影響

SELECT * from Table WHERE DATALENGTH(textField)=0 
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

2

請轉換文本字段爲varchar,因爲LEN不能用於文本字段。這爲我工作

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