мс sql использует как результат оператора в если оператор

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

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

результат вышеупомянутого всегда не подбирается, кто-либо может сказать мне, почему и как я могу использовать подобное или '=' результат в моей хранимой процедуре.спасибо

5
задан OMG Ponies 8 April 2010 в 15:56
поделиться

2 ответа

Измените свое объявление на

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

с помощью знака «=»

5
ответ дан 14 December 2019 в 01:05
поделиться

Вам нужно объявить d как varchar (100), а не просто varchar, иначе он просто станет N

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

Должно быть:

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

Также нет необходимости использовать LIKE, вы можете использовать =.

4
ответ дан 14 December 2019 в 01:05
поделиться
Другие вопросы по тегам:

Похожие вопросы: