回答

收藏

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

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

本代码在我的存储过程中:
( q3 p( P8 R8 Q) d3 YIF (@item1 IS NOT NULL) OR (LEN(@item1) > 0)        SELECT @sql = 'SELECT * FROM TEST1'    ELSE        SELECT @sql = 'SELECT * FROM TEST2' PRINT @sql;@item1是NVARCHAR(1000)类型。: H6 H+ N  {# G3 o
在执行此存储过程时,我提供 item1- j7 o6 J% Y) {$ {
EXEC    [dbo].[my_proc]        @item1 = N''表明
- j7 u/ p( G; Y7 F0 y! sSELECT * FROM TEST1 ///如果是正确的 @item1 = N'some'
; A% N/ l$ I5 U( u3 K4 i5 @& K代替
9 x8 K+ p  |5 K/ r' xSELECT * FROM TEST2
* o( k1 w2 q# f, F  Y它在sql用于验证字符串是否于验证字符串是否为null或为空,或者    我在某个地方犯了错误?7 {/ Z# u; B' M6 c! [
就像在C#中-> string.IsNullOrEmpty(myValue)3 D4 b, r, A' q# D' k+ V# V3 `. h
                                                                * i7 Z" E5 ?4 _( O6 |9 ?
    解决方案:                                                                ( Q3 }, W6 K; }% z- ]0 r
                                                                这是正确的行为。
3 m) U% m1 ~, [  w& r9 |如果将@设置item1为一个值,下面的表达式为true9 Y2 i, Z5 n( w3 h, n, f
IF (@item1 IS NOT NULL) OR (LEN(@item1) > 0)无论如何,在SQL Server没有这样的功能,但你可以创建自己的功能:1 H6 X4 R! z( p- O; X0 j2 d, X
CREATE FUNCTION dbo.IsNullOrEmpty(@x varchar(max)) returns bit asBEGINIF @SomeVarcharParm IS NOT NULL AND LEN(@SomeVarcharParm) > 0    RETURN 0ELSE    RETURN 1END
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则