2010-05-20 3 views

ответ

16

две вещи:

  1. Только нужно один (1) знак равенства оценить
  2. Вы необходимо указать длину на VARCHAR - по умолчанию используется один символ.

Использование:

DECLARE @temp VARCHAR(10) 
    SET @temp = 'm' 

IF @temp = 'm' 
    SELECT 'yes' 
ELSE 
    SELECT 'no' 

VARCHAR(10) означает, что VARCHAR будет вмещать до 10 символов. Другие примеры поведения -

DECLARE @temp VARCHAR 
    SET @temp = 'm' 

IF @temp = 'm' 
    SELECT 'yes' 
ELSE 
    SELECT 'no' 

... вернется "да"

DECLARE @temp VARCHAR 
    SET @temp = 'mtest' 

IF @temp = 'm' 
    SELECT 'yes' 
ELSE 
    SELECT 'no' 

... вернется "нет".

1
declare @temp as varchar 
    set @temp='Measure' 
    if(@temp = 'Measure') 
Select Measure from Measuretable 
else 
Select OtherMeasure from Measuretable 
+0

Это не работает для меня. Я попробовал. – Vishal

+3

@VJ: Это потому, что '@temp VARCHAR' означает, что @temp будет хранить только первый символ; остальное усекается без ошибок. –

+0

@VJ ввести параметр, не устанавливать значение в temp – Andrey

1

Что вы хотите, это оператор SQL-запроса. форма из них является либо:

select case [expression or column] 
    when [value] then [result] 
    when [value2] then [result2] 
    else [value3] end 

или:

select case 
    when [expression or column] = [value] then [result] 
    when [expression or column] = [value2] then [result2] 
    else [value3] end 

В вашем примере вы после:

declare @temp as varchar(100) 
set @temp='Measure' 

select case @temp 
    when 'Measure' then Measure 
    else OtherMeasure end 
from Measuretable 
1

Вы также можете попробовать это строка матча.

DECLARE @temp1 VARCHAR(1000) 
    SET @temp1 = '<li>Error in connecting server.</li>' 
DECLARE @temp2 VARCHAR(1000) 
    SET @temp2 = '<li>Error in connecting server. connection timeout.</li>' 

IF @temp1 like '%Error in connecting server.%' OR @temp1 like '%Error in connecting server. connection timeout.%' 
    SELECT 'yes' 
ELSE 
    SELECT 'no' 

 Смежные вопросы

  • Нет связанных вопросов^_^