0
我有一個varchar
列,通常有一個十進制值,但有些時候在該字段中有一些垃圾文本字符。選擇varchar列轉換爲小數點的所有行
是否可以在WHERE
子句中篩選成功轉換爲十進制值的行?
我使用SQL服務器2005
我有一個varchar
列,通常有一個十進制值,但有些時候在該字段中有一些垃圾文本字符。選擇varchar列轉換爲小數點的所有行
是否可以在WHERE
子句中篩選成功轉換爲十進制值的行?
我使用SQL服務器2005
一種方法是ISNUMERIC功能:
select * from YourTable where ISNUMERIC(col1) = 1
有一個疑難雜症:isnumeric
返回1,當一個字符串可以轉換爲任何數值類型,包括money
。例如,假設您有使用不同小數點分隔符的行,如7.9
和7,9
。兩者都將轉換爲money
,並且isnumeric
對於它們都返回1。但只有一個轉換爲decimal
,具體取決於SQL Server語言設置。
如果該字段可以包含垃圾,請記住ISNUMERIC會告訴您貨幣符號,tab,new-line,+和 - 是數字。 – 2010-04-24 20:35:42