declare @d varchar
set @d = 'No filter'
if (@d like 'No filter')
BEGIN
select 'matched'
end
else
begin
select 'not matched'
end
上面的结果总是不匹配任何人都可以告诉我为什么以及如何在我的存储过程中使用like或'='结果。 感谢
答案 0 :(得分:5)
将您的声明更改为
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
带有“=”
答案 1 :(得分:4)
您需要将d声明为varchar(100)而不仅仅是varchar,否则它只会变为N
declare @d varchar
set @d = 'No filter'
应该是:
declare @d varchar(100)
set @d = 'No filter'
也不需要使用LIKE,你可以使用=。
答案 2 :(得分:0)
我发现操作员非常有用。
如果(
@PLI_Component =''+ @ITemID +''+'BD'
或@PLI_Component =''+ @ITemID +''+'BD / 1'
或@PLI_Component =''+ @ITemID +''+'BD / 2'
或@PLI_Component =''+ @ITemID +''+'BD / 3'
或@PLI_Component =''+ @ITemID +''+'BD / 4'
或@PLI_Component =''+ @ITemID +''+'BD / 5'
)
可以替换
只有一行是
@PLI_Component LIKE @ITemID +'BD'
干杯