回答

收藏

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

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

本代码在我的存储过程中:
! M- U4 U( X: b8 q# n- wIF (@item1 IS NOT NULL) OR (LEN(@item1) > 0)        SELECT @sql = 'SELECT * FROM TEST1'    ELSE        SELECT @sql = 'SELECT * FROM TEST2' PRINT @sql;@item1是NVARCHAR(1000)类型。
5 N, C2 z: X  G在执行此存储过程时,我提供 item1
" |- o  i1 K$ e8 MEXEC    [dbo].[my_proc]        @item1 = N''表明
1 ~* e1 k2 a4 j  s& D) Q2 V1 XSELECT * FROM TEST1 ///如果是正确的 @item1 = N'some'
0 @- Z0 ]( t. r- {, w代替$ k% [( p8 w1 O  ~' ^( |! A
SELECT * FROM TEST2  S9 X/ ?0 f/ o$ ~
它在sql用于验证字符串是否于验证字符串是否为null或为空,或者    我在某个地方犯了错误?& G2 g9 n: `" g" O
就像在C#中-> string.IsNullOrEmpty(myValue)# R6 v! m+ f2 D0 {* J5 ~7 _, _
                                                                1 |3 {/ G: E4 z* V& c
    解决方案:                                                                ' P7 w7 P1 ~+ i3 ]) s
                                                                这是正确的行为。4 |: c9 h/ C( n9 _% G6 I
如果将@设置item1为一个值,下面的表达式为true
! x0 o2 c9 Q: C# IIF (@item1 IS NOT NULL) OR (LEN(@item1) > 0)无论如何,在SQL Server没有这样的功能,但你可以创建自己的功能:8 U8 Z6 O2 g9 Z' R- Y9 E5 ?8 c
CREATE FUNCTION dbo.IsNullOrEmpty(@x varchar(max)) returns bit asBEGINIF @SomeVarcharParm IS NOT NULL AND LEN(@SomeVarcharParm) > 0    RETURN 0ELSE    RETURN 1END
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则