String.IsNullOrEmpty类似于SQL中VARCHAR的函数?

AJ.*_*AJ. 19 t-sql sql-server

假设我有一个函数或存储过程,它接受几个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)


Den*_*hen 5

如果要串联或合并一个内联字符串(在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表达式可以依赖于一致的输入并做出相应的反应。