2017-09-01 134 views
2

我試圖通過創建查看視圖時數據庫中不存在的空白空間的可能性。我遇到的問題是當我試圖檢查NULL或空白值時,我的CASE聲明不能正常工作。它似乎適用於那些無效但空白似乎沒有那麼多運氣的人。在這種情況下,我想檢查空或空白的importantField如何檢查字段是否爲空且空白?

CREATE VIEW Lookup4 AS 
SELECT TOP 140000 CONCAT(no, 
    CASE WHEN (importantField is null OR importantField = '') 
     THEN '' ELSE ' ' + importantField END, 
      fieldname + ' ', anotherField2) AS UNRELATEDFIELD, Code, 
    CASE NAME 
     WHEN '101,,,,,' THEN 'value1e' 
     WHEN '14,,,,,' THEN 'value3' 
     WHEN '16,,,,,' THEN 'value4' 
    END AS NAME 
FROM dbo.Lookup 
+0

你有一個情況下_expression_和_columns_。 – jarlh

+1

請檢查這個問題 - https://stackoverflow.com/questions/45461543/sql-isnull-is-not-working-and-returns-a-value-even-if-it-is-a-space –

+0

與。長度我得到「無法綁定」的錯誤。 – DevAL

回答

1

這是你是什麼

CREATE VIEW Lookup4 AS 
SELECT TOP 140000 CONCAT(no, 
    CASE WHEN (ISNULL(importantField,'') = '') 
     THEN '' ELSE ' ' + importantField END, 
      fieldname + ' ', anotherField2) AS UNRELATEDFIELD, Code, 
    CASE NAME 
     WHEN '101,,,,,' THEN 'value1e' 
     WHEN '14,,,,,' THEN 'value3' 
     WHEN '16,,,,,' THEN 'value4' 
    END AS NAME 
FROM dbo.Lookup 
+0

isnull函數需要2個參數。有任何想法嗎? – DevAL

+0

你的標籤是SQL和SSMS,它們建議使用MS SQL TSQL和SQL Server Management Studio。 TSQL中的ISNULL有2個參數,我的示例有2個參數 ISNULL(fieldToCheck,ReplacementValueIfNull) –

+0

它似乎已經在第二次運行,沒有任何更改。可能會提示數據庫中的數據存在問題,歡呼。 – DevAL

0

如果你只是想檢查null而不是空字符串,那麼你也可以使用IFNULL你嘗試過。但是這也不適合空串。

SELECT IF(field1 IS NULL or field1 = '', 'empty', field1) as field1 
    from tablename 
+0

相信這些答案是正確的。 –

0

嘗試改變:

importantField is null 

IsNull(importantField) 
1
CREATE VIEW Lookup4 AS 
SELECT TOP 140000 CONCAT(no,ifnull(importantField,'')<>'', 
      fieldname + ' ', anotherField2) AS UNRELATEDFIELD, Code, 
    CASE NAME 
     WHEN '101,,,,,' THEN 'value1e' 
     WHEN '14,,,,,' THEN 'value3' 
     WHEN '16,,,,,' THEN 'value4' 
    END AS NAME 
FROM dbo.Lookup 
+0

isnull函數需要2個參數。有任何想法嗎? – DevAL

+0

你也可以像ifnull一樣使用isnull –

0

微小的變化經過交流盤帶你的結果

方法1:

Select * 
    From dbo.Lookup 
    Where IsNull(importantField, '') = '' 

方法2:

Select * 
    From dbo.Lookup 
    Where (importantField is NULL or importantField = '')