代码之家  ›  专栏  ›  技术社区  ›  atoumey

如何检查SQL Server文本列是否为空?

  •  165
  • atoumey  · 技术社区  · 18 年前

    “不等于”运算符中的数据类型text和varchar不兼容。

    是否有一个特殊函数来确定文本列的值是否不是null而是空的?

    15 回复  |  直到 13 年前
        1
  •  322
  •   Tim Cooper    14 年前
    where datalength(mytextfield)=0
    
        2
  •  50
  •   user_v    14 年前
    ISNULL(
    case textcolum1
        WHEN '' THEN NULL
        ELSE textcolum1
    END 
    ,textcolum2) textcolum1
    
        3
  •  30
  •   Dane    18 年前

    实际上,你只需要使用LIKE操作符。

    SELECT * FROM mytable WHERE mytextfield LIKE ''
    
        4
  •  9
  •   Nima    11 年前

    要仅获取空值(而不是空值),请执行以下操作:

    SELECT * FROM myTable WHERE myColumn = ''
    

    要同时获取null值和空值,请执行以下操作:

    SELECT * FROM myTable WHERE myColumn IS NULL OR myColumn = ''
    

    SELECT * FROM myTable WHERE myColumn IS NULL
    

    要获取null和empty以外的值,请执行以下操作:

    SELECT * FROM myTable WHERE myColumn <> ''
    


    记住,只有在必要时才使用LIKE短语,因为与其他类型的搜索相比,它们会降低性能。

        5
  •  3
  •   Enrique Garcia    8 年前
    SELECT * FROM TABLE
    WHERE ISNULL(FIELD, '')=''
    
        6
  •  2
  •   Pearl    13 年前

    Select * from tb_Employee where ename is null
    
        7
  •  1
  •   sloth    14 年前

    我知道这篇文章很古老,但我发现它很有用。

    它没有解决我返回带有非空文本字段的记录的问题,所以我想我应该添加我的解决方案。

    WHERE xyz LIKE CAST('% %' as text)
    
        8
  •  1
  •   Jorgesys    11 年前

    使用 DATALENGTH

    SELECT length = DATALENGTH(myField)
    FROM myTABLE
    
        9
  •  1
  •   barbsan Cibi    7 年前

    而不是使用 isnull 使用 case

    case when campo is null then '' else campo end
    

    在您的问题中,您需要执行以下操作:

    case when campo is null then '' else
      case when len(campo) = 0 then '' else campo en
    end
    

    代码如下:

    create table #tabla(
    id int,
    campo varchar(10)
    )
    
    insert into #tabla
    values(1,null)
    
    insert into #tabla
    values(2,'')
    
    insert into #tabla
    values(3,null)
    
    insert into #tabla
    values(4,'dato4')
    
    insert into #tabla
    values(5,'dato5')
    
    select id, case when campo is null then 'DATA NULL' else
      case when len(campo) = 0 then 'DATA EMPTY' else campo end
    end
    from #tabla
    
    drop table #tabla
    
        10
  •  0
  •   bdukes Jon Skeet    18 年前

    我会对你进行测试 SUBSTRING

        11
  •  0
  •   Tyler Gooch    18 年前

        12
  •  0
  •   Yoosaf Abdulla    14 年前

    我希望在值为null或为空时显示预定义文本(“无可用实验室”),我的朋友帮我做到了这一点:

    StrengthInfo = CASE WHEN ((SELECT COUNT(UnitsOrdered) FROM [Data_Sub_orders].[dbo].[Snappy_Orders_Sub] WHERE IdPatient = @PatientId and IdDrugService = 226)> 0)
                                THEN cast((S.UnitsOrdered) as varchar(50))
                        ELSE 'No Labs Available'
                        END
    
        13
  •  0
  •   marklark    14 年前

    你必须同时做这两件事:

    SELECT * FROM Table WHERE Text IS NULL or Text LIKE ''

        14
  •  0
  •   Leo    11 年前

    如果需要处理这样一个事实,即在您的用例场景中,空间只能是空的,因为下面的查询将返回1,而不是0。

    SELECT datalength(' ')
    

    SELECT datalength(RTRIM(LTRIM(ISNULL([TextColumn], ''))))
    
        15
  •  0
  •   Luiz Fernando Corrêa Leite    8 年前

    select * from mytable where convert(varchar, mycolumn) = ''
    

    我希望能帮助你!

        16
  •  0
  •   user11968038    7 年前
    DECLARE @temp as nvarchar(20)
    
    SET @temp = NULL
    --SET @temp = ''
    --SET @temp = 'Test'
    
    SELECT IIF(ISNULL(@temp,'')='','[Empty]',@temp)
    
        17
  •  0
  •   Pallav Chanana    5 年前

    它将做两件事:

    1. 将空值替换为默认值,例如NA。
    SELECT coalesce(NULLIF(column_name,''),'NA') as 'desired_name') from table;
    
    推荐文章