如何在IF语句的Sql Server检查参数是空还是空null?
技术问答
432 人阅读
|
0 人回复
|
2023-09-14
|
本代码在我的存储过程中:
( @7 f, x9 I- ^4 aIF (@item1 IS NOT NULL) OR (LEN(@item1) > 0) SELECT @sql = 'SELECT * FROM TEST1' ELSE SELECT @sql = 'SELECT * FROM TEST2' PRINT @sql;@item1是NVARCHAR(1000)类型。* o& a; b" s: ?- H2 c% h+ |
在执行此存储过程时,我提供 item1& x5 A1 I5 a+ L9 q8 [& q- n
EXEC [dbo].[my_proc] @item1 = N''表明
- f9 h2 k/ A0 r2 OSELECT * FROM TEST1 ///如果是正确的 @item1 = N'some'
& l7 C5 V6 \# p8 L5 P' ?& N8 A- U代替. W2 ?" b0 G1 Y, t/ u3 v/ f
SELECT * FROM TEST2
* L; L6 p& R0 V& j0 e它在sql用于验证字符串是否于验证字符串是否为null或为空,或者 我在某个地方犯了错误?$ q& V( K- y' H/ A2 N5 P, P
就像在C#中-> string.IsNullOrEmpty(myValue)% z- a- r& Q* X
+ o' q) m$ u3 E9 S1 \/ ?- p
解决方案:
! P; V! i' C3 j4 J" O( Z 这是正确的行为。' { \7 y O' n$ W X/ G
如果将@设置item1为一个值,下面的表达式为true
4 x. Y+ j, n/ z3 F& G0 MIF (@item1 IS NOT NULL) OR (LEN(@item1) > 0)无论如何,在SQL Server没有这样的功能,但你可以创建自己的功能:
: g* {/ D9 |+ YCREATE FUNCTION dbo.IsNullOrEmpty(@x varchar(max)) returns bit asBEGINIF @SomeVarcharParm IS NOT NULL AND LEN(@SomeVarcharParm) > 0 RETURN 0ELSE RETURN 1END |
|
|
|
|
|