【问题标题】:Null or empty check for a string variable对字符串变量进行空或空检查
【发布时间】:2013-04-11 09:38:37
【问题描述】:
if((isnull(@value,''))='')

我想知道上面的代码在检查变量是空还是空时是否有效。

【问题讨论】:

  • 这取决于@value 的类型。
  • @Pete:不在 SQL Server 中。
  • 它是一个 INT 类型。我想将 0 视为有效.. 只想消除 NULL 和 '' 值
  • @Bharath '' 不是 INT 的有效值,因此如果类型真的是 INT,则无需检查这种情况。

标签: sql sql-server-2008 null null-check


【解决方案1】:
    IF (LEN(@value) > 0) PRINT 'Variable is not null and not empty'

【讨论】:

    【解决方案2】:
    declare @sexo as char(1)
    
    select @sexo='F'
    
    select * from pessoa
    
    where isnull(Sexo,0) =isnull(@Sexo,0)
    

    【讨论】:

      【解决方案3】:

      你可以试试这个.....

      DECLARE @value Varchar(100)=NULL
      IF(@value = '' OR @value IS NULL)
        BEGIN
          select 1
        END
      ELSE
        BEGIN
          select 0
        END
      

      【讨论】:

        【解决方案4】:

        你可以试试

        <column_name> is null
        

        where 子句中。

        【讨论】:

        • 如果您添加更多详细信息,您的回答可能会更适合提问者。
        【解决方案5】:

        试试这个:

        ISNULL(IIF (ColunmValue!='',ColunmValue, 'no units exists') , 'no units exists') AS 'ColunmValueName' 
        

        【讨论】:

          【解决方案6】:

          使用这种方式更好

          if LEN(ISNULL(@Value,''))=0              
          

          此检查字段为emptyNULL

          【讨论】:

          • 我喜欢这个但修改了它:if ''=ISNULL(@Value,'')
          【解决方案7】:

          是的,它有效。检查以下示例。假设@value 不是int

          WITH CTE 
          AS
          (
              SELECT NULL AS test
              UNION
              SELECT '' AS test
              UNION
              SELECT '123' AS test
          )
          
          SELECT 
              CASE WHEN isnull(test,'')='' THEN 'empty' ELSE test END AS IS_EMPTY 
          FROM CTE
          

          结果:

          IS_EMPTY
          --------
          empty
          empty
          123
          

          【讨论】:

            【解决方案8】:

            是的,您也可以使用基于 ANSI SQL 标准的COALESCE(@value,'')=''

            SELECT CASE WHEN COALESCE(@value,'')='' 
                THEN 'Yes, it is null or empty' ELSE 'No, not null or empty' 
                END AS IsNullOrEmpty
            

            DEMO

            【讨论】:

              【解决方案9】:

              是的,该代码正是这样做的。

              你也可以使用:

              if (@value is null or @value = '')
              

              编辑:

              添加了@valueint 值的信息,您需要改为:

              if (@value is null)
              

              int 值永远不能包含值 ''

              【讨论】:

              • 在处理可能为 null 或不为 null 的比较时,您应该坚持使用“is null”或“is not null”,这一点也很重要。
              • @value 为字符串时,如果 (LEN(@value) 为 null) 怎么办?
              • @rivaldid:这与检查值是否为空是一样的。只有当字符串为空时,字符串的长度才为空。如果字符串长度为零,len 函数返回零,而不是 null。
              猜你喜欢
              • 2010-09-27
              • 2018-11-28
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2017-08-19
              • 2015-06-05
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多