2013-06-27 21 views
1

我有一個表如何找到默認的NULL和NULL字符串值的區別

Merchant(
    id (PK,char(15),not null), 
    name (varchar(22),null), 
    city(varchar(10),null), 
    location(varchar(10),null), 
    state_code(int,null), 
    country_code(int,null) 
) 

哪裏city總是NULLnameNULL

有人更新這些字段爲字符串"NULL"

我如何找到差異?

+0

你想檢查記錄的值或在架構中的差異?? –

+0

更好的方法是用NULL替換NULL,並修正代碼中的錯誤以正確寫入NULL。 – Cesar

回答

2

您可以修復有問題的行,像這樣:

UPDATE Merchant 
SET city = NULL 
WHERE city = 'NULL'; 

UPDATE Merchant 
SET name = NULL 
WHERE name = 'NULL'; 

要簡單地找到行與字符串"NULL"

SELECT * FROM Merchant 
WHERE city = 'NULL' 
OR name = 'NULL'; 

還是要找到真正的NULL S:在所有的這些例子

SELECT * FROM Merchant 
WHERE city = NULL 
OR name = NULL; 

注意:NULL,然後有'NULL'

+0

不,問題是我如何才能找到哪個NULL值實際上是NULL,而不是表記錄中的'NULL'字符串 –

+0

@ user2527764我已經更新了我的答案。 –

1

你可以嘗試像

SELECT * 
FROM Merchant 
WHERE city = 'NULL' 
OR name = 'NULL' 

這應返回這裏無論是城市列或列的名稱設置爲空字符串的所有行。

SELECT * 
FROM Merchant 
WHERE city IS NULL 
OR name IS NULL 

將返回所有行,無論是列城市或列名NULL

+0

@astanderThanks –

0
  • null表示未設置
  • 空字符串是沒有符號的字符串

它更簡單與例如數字(支付賬單): - 支付的金額爲0(您無需支付)[amount = 0] - 金額可以是100.-(您必須支付100.-)[amount = 100] - 或金額可以爲NULL,這表示金額尚未設置(尚未)[amount is null]

括號內的語句將針對給定的情況返回true。

所以你看,這不是0(沒有錢支付)或NULL(未設置)相同的金額。這與你的字符串一樣。它沒有被設置或者是一個空字符串。

我希望它可以幫助你... ;-)

相關問題