回答

收藏

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

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

本代码在我的存储过程中:" _$ M5 V! W4 l  i; D4 Q( L1 P; g
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)类型。7 S! ]# P9 n* Y, o$ q) G1 ~# G
在执行此存储过程时,我提供 item1
) J8 z- }  d* {. v' o; bEXEC    [dbo].[my_proc]        @item1 = N''表明4 c$ \4 J$ ~* @/ x% H/ K/ g
SELECT * FROM TEST1 ///如果是正确的 @item1 = N'some'
" d5 B5 \1 F& b& H2 A9 F2 _' F; e代替
4 N; X0 ^0 b7 lSELECT * FROM TEST2
0 v$ P8 c" g. Y+ r3 c它在sql用于验证字符串是否于验证字符串是否为null或为空,或者    我在某个地方犯了错误?
3 {# E8 o# j& k# G# w  l就像在C#中-> string.IsNullOrEmpty(myValue)3 X2 a& J9 n. A, Y) P6 r# n0 `
                                                               
5 U, L  g! R8 J8 N8 G    解决方案:                                                                , P3 K9 }( J6 ^( j+ G9 x% [
                                                                这是正确的行为。4 ~/ f, \/ U7 a! E* \- j, A9 V
如果将@设置item1为一个值,下面的表达式为true
3 ]0 a9 l' L( w4 c$ [' Y  S' EIF (@item1 IS NOT NULL) OR (LEN(@item1) > 0)无论如何,在SQL Server没有这样的功能,但你可以创建自己的功能:' x) ^, t. B, q8 u) O# N9 T. z& v
CREATE FUNCTION dbo.IsNullOrEmpty(@x varchar(max)) returns bit asBEGINIF @SomeVarcharParm IS NOT NULL AND LEN(@SomeVarcharParm) > 0    RETURN 0ELSE    RETURN 1END
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则