2011-03-22 116 views
1

有人能幫助我得到這個SQL查詢下來的語法?我不是很有經驗,也不知道如何去做。這是我到目前爲止。幫助SQL查詢

SELECT ... WHERE (@MyVariable IS NULL OR [MyVariable] <= (CAST(@MyVariable as NUMERIC))) 

我真正需要的是能夠選擇的所有行[MyVariable的]是< = @MyVariable但也有2個文本選擇MyVariable的可能是在這種情況下,它應該始終選擇行。你如何做到這一點,而不會出現鑄造錯誤?

+0

一些樣本數據可能會幫助 – Gratzy 2011-03-22 16:09:16

+0

我不知道我收到你的問題:表中的[MyVariable]列是什麼類型? – 2011-03-22 16:09:56

+0

它是一個nvarchar。該列中的數據將始終爲1,2,3,4,TEXT1,TEXT2。在選擇查詢,如果該列中的值是行應該被選擇<= @MyVariable或者如果@MyVariable或者是文本的選項。我知道有點混亂。 – novacara 2011-03-22 16:14:13

回答

2

我認爲你需要做一對夫婦的扭曲得到它的工作..但我認爲使用ISNUMERIC結合case語句就可以了:

SELECT ... WHERE 
@MyVariable IS NULL OR 
ISNUMERIC(@MyVariable) = 0 OR 
[MyVariable] < CASE 
       WHEN IsNumeric(@MyVariable) = 1 
        THEN CAST(@MyVariable as NUMERIC) 
       ELSE 0 -- if you have negatives in your db go to max negative 
      END 
+0

我會給它一個鏡頭,讓你知道! – novacara 2011-03-22 16:27:09

+0

@novacara:你沒有說你正在使用什麼DBMS,但是請注意,IsNumeric適用於SQL Server,但不適用於(AFAIK)適用於MySQL – 2011-03-22 16:40:31

+0

噢對不起,我正在使用SQL Server – novacara 2011-03-22 16:47:14