2017-09-01 96 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 = '')