2017-04-14 46 views
-1

我在數據庫表中有一個空白的數字列。 我想這一點:從列中搜索空白數值SQL Server

select top 10 
     CHQNO, 
     ACCOUNT, 
     SURNAME, 
     OTHRNAME, 
     CHQAMT, 
     BANKNO, 
     PYMTNO, 
     GLACCTNO 
from table1 
where CHQAMT = '' 

注:CHQAMT列類型是小數

,並收到錯誤:Error converting data type varchar to numeric.

如何解決這個問題?

+0

通過空白你的意思有NULL值? –

+0

不,在我看來,NULL不是空白。空白表示一個空白區域。 – AskMe

+0

數字或小數列不能有'空格'值。它是一個有效的數字或十進制值,或者它可以沒有任何值,它將是NULL。 –

回答

2

如果CHQAMT是數字,你應該檢查是否是NULL(空白= '' 只爲字符串)

select top 10 
     CHQNO, 
     ACCOUNT, 
     SURNAME, 
     OTHRNAME, 
     CHQAMT, 
     BANKNO, 
     PYMTNO, 
     GLACCTNO 
from table1 
where CHQAMT IS NULL; 

一些簡單的測試:

CREATE TABLE TEST1 (NUM INT, STRING VARCHAR(10)); 
INSERT INTO TEST1 VALUES (NULL, NULL); 
INSERT INTO TEST1 VALUES (1, ''); 
INSERT INTO TEST1 VALUES (0, 'Zero'); 

SELECT * FROM TEST1 WHERE NUM IS NULL; 

輸出:

NUM STRING 
1 NULL NULL 

SELECT * FROM TEST1 WHERE STRING IS NULL; 

輸出:

NUM STRING 
1 NULL NULL 

-----下一個(數據類型VARCHAR會有不同的結果在Oracle中,但這不是你的情況)

SELECT * FROM TEST1 WHERE STRING = ''; 

輸出:

NUM STRING 
1 1 

最後:

SELECT * FROM TEST1 WHERE CAST(NUM AS VARCHAR(10))= ''; 

輸出(無):實際上我認爲它沒有任何意義。

+0

與「空白」相同爲「NULL」? – AskMe

+0

你是什麼意思的空白? – GuidoG

+0

絕對不是。沒有意味着沒有價值。空白(對於字符串數據類型)=''(但是是一個值)。 – etsa

0

如果您有一個數字列,那麼該值不能爲空。您收到錯誤消息「Error converting data type varchar to numeric.」的原因是,當您比較「'時,它試圖將字符串''轉換爲數字進行比較。

如果您正在尋找NULL值,你必須改變你的查詢是:

select top 10 
     CHQNO, 
     ACCOUNT, 
     SURNAME, 
     OTHRNAME, 
     CHQAMT, 
     BANKNO, 
     PYMTNO, 
     GLACCTNO 
from table1 
where CHQAMT is null 

如果你真的正在尋找一個空白,我懷疑是不是你需要改變的情況下您的查詢是:

select top 10 
     CHQNO, 
     ACCOUNT, 
     SURNAME, 
     OTHRNAME, 
     CHQAMT, 
     BANKNO, 
     PYMTNO, 
     GLACCTNO 
from table1 
where convert(varchar,CHQAMT) = '' 
0

你可以嘗試檢查這樣的...

select top 10 
      CHQNO, 
      ACCOUNT, 
      SURNAME, 
      OTHRNAME, 
      CHQAMT, 
      BANKNO, 
      PYMTNO, 
      GLACCTNO 
    from table1 
    where (CHQAMT is null OR CONVERT(varchar,CHQAMT) = '' OR CONVERT(int, CHQAMT) = 0)