选择varchar列转换为小数的所有行

时间:2010-04-24 18:37:27

标签: sql sql-server where-clause

我有一个varchar列,通常有一个十进制值,但有时在该字段中有一些垃圾文本字符。

是否可以在WHERE子句中过滤成功转换为十进制值的行?

我正在使用sql-server 2005

1 个答案:

答案 0 :(得分:8)

一种方法是ISNUMERIC功能:

select * from YourTable where ISNUMERIC(col1) = 1

有一个问题:只要字符串可以转换为任何数字类型,isnumeric就会返回1,包括money。例如,假设您有使用不同小数分隔符的行,例如7.97,9。两者都将转换为moneyisnumeric将返回1。但只有一个转换为decimal,具体取决于SQL Server语言设置。