执行此查询时,我不会在EXT_NO
列
SELECT *
FROM KM_USER_MAST
WHERE EXT_NO = DBO.KM_GET_SRCH_PARAM(NULL, EXT_NO)
我的目的是在第一个param为null时获取包括null的所有行。
这是程序的代码。
ALTER function [dbo].[KM_GET_SRCH_PARAM](
@param VARCHAR(8000)
, @whereParam VARCHAR(8000) )
returns varchar(8000)
as
begin
declare @returnValue varchar(8000);
IF @param IS NULL OR @param = ''
SET @returnValue = ISNULL(@whereParam,'');
ELSE
SET @returnValue = @param;
return @returnValue
end
获取所有行的任何方法???
答案 0 :(得分:1)
我不明白你的功能想要实现什么?
如果要检索EXT_NO为空值的所有行:
SELECT *
FROM KM_USER_MAST
WHERE EXT_NO IS NULL
我错过了什么吗?
如果你想要所有值为'null'或空字符串''的行,那么:
SELECT *
FROM KM_USER_MAST
WHERE EXT_NO IS NULL OR EXT_NO = ''
答案 1 :(得分:0)
您无法按照使用该功能的方式获取NULL
值。对于xxx的所有值,表达式NULL = xxx
的计算结果为false。
您可以将where
子句写为:
SELECT *
FROM KM_USER_MAST
WHERE DBO.KM_GET_SRCH_PARAM(NULL, EXT_NO) = 1;
将函数定义为:
ALTER function [dbo].[KM_GET_SRCH_PARAM](
@param VARCHAR(8000),
@whereParam VARCHAR(8000)
)
returns int
as begin
declare @returnValue int;
IF @param IS NULL OR @param = ''
SET @returnValue = 1;
ELSE
SET @returnValue = (case when @param = @WhereParam then 1 else 0 end);
return @returnValue;
end;
答案 2 :(得分:0)
SELECT *
FROM KM_USER_MAST
WHERE EXT_NO = COALESCE(NULL, EXT_NO)
或
SELECT *
FROM KM_USER_MAST
WHERE EXT_NO = ISNULL(NULL, EXT_NO)
用参数
替换null