假设我有一个函数或存储过程,它接受几个VARCHAR参数.我已经厌倦了这样写SQL来测试这些参数是否有值:
IF @SomeVarcharParm IS NOT NULL AND LEN(@SomeVarcharParm) > 0
BEGIN
-- do stuff
END
Run Code Online (Sandbox Code Playgroud)
必须有一个更好的方法来做到这一点.不存在吗?
Der*_*omm 26
您可以这样做,ISNULL(@SomeVarcharParam, '') <> ''或者您可以创建一个返回一点的UDF:
create function dbo.IsNullOrEmpty(@x varchar(max)) returns bit as
BEGIN
IF @SomeVarcharParm IS NOT NULL AND LEN(@SomeVarcharParm) > 0
RETURN 0
ELSE
RETURN 1
END
Run Code Online (Sandbox Code Playgroud)
并称之为使用 IF NOT dbo.IsNullOrEmpty(@SomeVarcharParam) BEGIN ...
请记住,在调用UDF时,必须为其所有者添加前缀(此处为dbo.)
Joe*_*lli 13
IF COALESCE(@SomeVarcharParm, '') <> ''
BEGIN
-- do stuff
END
Run Code Online (Sandbox Code Playgroud)
如果要串联或合并一个内联字符串(在select语句内),并且我想检查该列是NULL还是Empty,请执行以下操作:
ISNULL('starting to build string '
+ NULLIF(some_table..some_col_that_might_be_null_or_empty, '')
, 'string to append if the resulting concatenation is null')
Run Code Online (Sandbox Code Playgroud)
表达式内部的NULLIF将强制该列为空(如果该列为空),则外部ISNULL表达式可以依赖于一致的输入并做出相应的反应。