2011-12-12 65 views
1

在我正在使用的數據庫中,我有一個數據類型爲varchar(10)的表中的字段。該字段可以爲空,並且不必包含整數,但大部分時間都是這樣。我將我查詢中每次迭代的WHERE子句中該字段的值與一個整數值進行比較。小數點右邊必須至少有一個數字,最多可以有2位小數,但大多數情況下會有1. 0.00可以與0比較,但0不符合條件,因爲它不符合條件在它之後沒有小數。什麼是最安全的公式使用,以便我只考慮非空雙值?將整數轉換爲轉換後的varchar T-SQL字段

假設我有我的表中這些值:

NULL
2.49
2.0
2.1
2.4

我只希望這些考慮這些值在此表達​​式中爲真:
2.49
2.0
2.1
2.4

這裏的一個開始..我還沒有在NULL也不十進制情況想通..

並轉換(INT,fieldname.sortorder)= 2

回答

1

添加一個附加條件來進行字符串比較。

AND fieldname.sortorder LIKE '%[0-9].[0-9]%' 
AND CONVERT(INT, fieldname.sortorder)= 2 
+0

我得到了2號線的錯誤..所以我不得不這樣做:和轉換(INT,CAST(fieldname.sortorder爲十進制(10,2)))= @ sortorderint ......作爲對於第一行......我們不應該依賴%,因爲這意味着什麼不是嗎?現在看起來不錯,但可能可以改進。 – MacGyver