2017-09-01 3 views
2

私はルックアップのためのビューを作成するときにデータベースに存在しない値で空白の可能性を取り除こうとしています。私が抱えている問題は、私がNULLまたは空白の値をチェックしようとしているときに私のCASEステートメントが正しく動作していないということです。それはヌルですが、空白はあまり運がないように見えるもののために働くようです。この場合、私はあなただけあなたがしようとしたとして、あなたはまた、IFNULL使用することができ、空の文字列にNOT NULLをチェックしたい場合は、nullまたはimportantFieldフィールドがNULLで空白かどうかを確認するには?

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

with this questions - https://stackoverflow.com/questions/45461543/sql-isnull-is-not-working-and-returns-a-value-even-if-it-is-a-space –

+0

をご覧ください。私は "バインドできませんでした"というエラーが発生します。 – DevAL

答えて

1

importantField is null 

あなたはマイナーで交流を変更

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

の空白をチェックしようとしています。しかしそれは空文字列にも適していません。

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

これらの回答が正しいことを確認してください。 –

0

変更しよう:

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あなたの結果に

をcording:

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

方法2:

Select * 
    From dbo.Lookup 
    Where (importantField is NULL or importantField = '') 
関連する問題