对字符串变量进行空或空检查

Posted

技术标签:

【中文标题】对字符串变量进行空或空检查【英文标题】: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,则无需检查这种情况。 【参考方案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。

以上是关于对字符串变量进行空或空检查的主要内容,如果未能解决你的问题,请参考以下文章

评估空或空 JSTL c 标签

在 joi 和 express-validation 中允许字符串为空或空

单击提交时无法检查空或空

检查对象中的值是不是为空或空javascript

使用javascript对数组进行排序而不改变空或空的地方

spark中的isNullOrEmpty函数检查数据框中的列是不是为空或空字符串