Ms sql to use as result of expression in if statement

declare @d varchar
set @d = 'No filter'

if (@d like 'No filter')
  BEGIN
    select 'matched'
  end
else
  begin
    select 'not matched'
  end

the result above always doesn't match, can someone tell me why and how I can use a similar or '=' result in my stored procedure. thank

+5
source share
3 answers

Change your declaration to

declare @d varchar(10)

Then

declare @d varchar(10)

set @d = 'No filter' 

if (@d LIKE 'No filter') 
  BEGIN 
    select 'matched' 
  end 
else 
  begin 
    select 'not matched' 
  end

will work.

Please remember that LIKE is used for pattern matching,

sort of

DECLARE @Val VARCHAR(10)
SET @Val = 'foo bar'
if (@Val LIKE '%foo%') 
  BEGIN 
    select 'matched' 
  end 
else 
  begin 
    select 'not matched' 
  end

So, in your case, you can change the code to

declare @d varchar(10)
set @d = 'No filter' 

if (@d = 'No filter') 
  BEGIN 
    select 'matched' 
  end 
else 
  begin 
    select 'not matched' 
  end

with "="

+5
source

You need to declare d as varchar (100) is not just varchar, otherwise it will just become N

declare @d varchar
set @d = 'No filter'

Must be:

declare @d varchar(100)
set @d = 'No filter'

Also don't need to use LIKE with this, you can use =.

+4

, .

(                                   @PLI_Component = '' + @ITemID + '' + 'BD'                                OR @PLI_Component = '' + @ITemID + '' + 'BD/1'                                OR @PLI_Component = '' + @ITemID + '' + 'BD/2'                                OR @PLI_Component = '' + @ITemID + '' + 'BD/3'
                               OR @PLI_Component = '' + @ITemID + '' + 'BD/4'
                               OR @PLI_Component = '' + @ITemID + '' + 'BD/5'

)

,

@PLI_Component LIKE @ITemID + 'BD'

0

All Articles