回答

收藏

如何在IF语句的Sql Server检查参数是空还是空null?

技术问答 技术问答 494 人阅读 | 0 人回复 | 2023-09-14

本代码在我的存储过程中:( H) {3 f& R- x6 U
IF (@item1 IS NOT NULL) OR (LEN(@item1) > 0)        SELECT @sql = 'SELECT * FROM TEST1'    ELSE        SELECT @sql = 'SELECT * FROM TEST2' PRINT @sql;@item1是NVARCHAR(1000)类型。
' J( V+ n) I# D1 S9 n在执行此存储过程时,我提供 item1
  J* C! y$ u$ K2 K) kEXEC    [dbo].[my_proc]        @item1 = N''表明
# D  C9 J& A& ^: o* s. USELECT * FROM TEST1 ///如果是正确的 @item1 = N'some'
$ M' e4 ^% w/ d. P2 J' {1 ]代替6 X$ _) I, ?2 ]1 j$ d4 A) s2 F
SELECT * FROM TEST2
6 E) d1 t+ x3 _9 o: w2 a它在sql用于验证字符串是否于验证字符串是否为null或为空,或者    我在某个地方犯了错误?
6 Q% L7 {! n! s7 m$ }% n+ P就像在C#中-> string.IsNullOrEmpty(myValue)
( U0 I, B2 @3 \) P) s                                                                $ |4 L# z0 v" Y* {5 p5 T! Z! v# C) o
    解决方案:                                                                ' v! k9 ]7 N. Q
                                                                这是正确的行为。
- |* C$ X/ M/ y* X5 G* `如果将@设置item1为一个值,下面的表达式为true; Z% L/ n! x6 ?" Z# ^/ g
IF (@item1 IS NOT NULL) OR (LEN(@item1) > 0)无论如何,在SQL Server没有这样的功能,但你可以创建自己的功能:% f# j" u* `2 j/ C6 Y0 X+ F
CREATE FUNCTION dbo.IsNullOrEmpty(@x varchar(max)) returns bit asBEGINIF @SomeVarcharParm IS NOT NULL AND LEN(@SomeVarcharParm) > 0    RETURN 0ELSE    RETURN 1END
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则