对字符串变量进行空或空检查
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
此检查字段为empty
或NULL
【讨论】:
我喜欢这个但修改了它: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 = '')
编辑:
添加了@value
是int
值的信息,您需要改为:
if (@value is null)
int
值永远不能包含值 ''
。
【讨论】:
在处理可能为 null 或不为 null 的比较时,您应该坚持使用“is null”或“is not null”,这一点也很重要。 @value 为字符串时,如果 (LEN(@value) 为 null) 怎么办? @rivaldid:这与检查值是否为空是一样的。只有当字符串为空时,字符串的长度才为空。如果字符串长度为零,len
函数返回零,而不是 null。以上是关于对字符串变量进行空或空检查的主要内容,如果未能解决你的问题,请参考以下文章