如何在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 |
|
|
|
|
|