declare @d varchar
set @d = 'No filter'
if (@d like 'No filter')
BEGIN
select 'matched'
end
else
begin
select 'not matched'
end
上面总是不匹配的结果,任何人可以告诉我为什么,我该如何使用等,或“=”结果我的存储过程使用像语句结果。 感谢MS SQL中的if语句
declare @d varchar
set @d = 'No filter'
if (@d like 'No filter')
BEGIN
select 'matched'
end
else
begin
select 'not matched'
end
上面总是不匹配的结果,任何人可以告诉我为什么,我该如何使用等,或“=”结果我的存储过程使用像语句结果。 感谢MS SQL中的if语句
你的宣言更改为
declare @d varchar(10)
然后
declare @d varchar(10)
set @d = 'No filter'
if (@d LIKE 'No filter')
BEGIN
select 'matched'
end
else
begin
select 'not matched'
end
会工作。
请记住,LIKE用于模式匹配,
像
DECLARE @Val VARCHAR(10)
SET @Val = 'foo bar'
if (@Val LIKE '%foo%')
BEGIN
select 'matched'
end
else
begin
select 'not matched'
end
所以你的情况,你可能需要将代码用“=改为
declare @d varchar(10)
set @d = 'No filter'
if (@d = 'No filter')
BEGIN
select 'matched'
end
else
begin
select 'not matched'
end
“
需要声明d为varchar(100)不只是VARCHAR,否则它只是变成N
declare @d varchar
set @d = 'No filter'
应该是:
declare @d varchar(100)
set @d = 'No filter'
也用不着LIKE与此使用你可以使用=。
我觉得运算符非常有用。
IF( @PLI_Component = '' + @ITemID + '' + 'BD' OR @PLI_Component = '' + @ITemID + '' + 'BD/1' OR @PLI_Component = '' + @ ITemID +''+'BD/2' 或@PLI_Component =''+ @ITemID +''+'BD/3'
或@PLI_Component =''+ @ITemID +''+'BD/4'
OR @PLI_Component = '' + @ITemID + '' + 'BD/5'
)
可以更换
由只有一条线是
@PLI_Component LIKE @ITemID + 'BD'
干杯
添加打印@d或选择@d来证实这一点。 – MJB 2010-04-08 15:57:59
+1:正确 - 总是定义数据类型属性比假定默认值是个好习惯。 – 2010-04-08 16:09:20