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