2010-05-20 49 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 2010-05-20 20:34:06

+3

@VJ:這是因爲@temp VARCHAR意味着@temp將只存儲第一個字符;其餘的被截斷而沒有錯誤。 – 2010-05-20 20:38:41

+0

@VJ引入一個參數,不要將值設置爲temp – Andrey 2010-05-20 20:54:57

1

你想要的是一個SQL case語句。 這些形式可以是:

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' 
相關問題