Sql 选择varchar列转换为十进制的所有行

Sql 选择varchar列转换为十进制的所有行,sql,sql-server,where-clause,Sql,Sql Server,Where Clause,我有一个varchar列,它通常有一个十进制值,但有时该字段中有一些垃圾文本字符 是否可以在WHERE子句中筛选成功转换为十进制值的行 我正在使用sql server 2005一种方法是函数: select * from YourTable where ISNUMERIC(col1) = 1 有一个问题:每当字符串可以转换为任何数字类型(包括货币)时,isnumeric都返回1。例如,假设您有使用不同小数分隔符的行,如7.9和7.9。两者都将转换为货币,isnumeric为两者返回1。但根据S

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

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

我正在使用sql server 2005

一种方法是函数:

select * from YourTable where ISNUMERIC(col1) = 1

有一个问题:每当字符串可以转换为任何数字类型(包括货币)时,isnumeric都返回1。例如,假设您有使用不同小数分隔符的行,如7.9和7.9。两者都将转换为货币,isnumeric为两者返回1。但根据SQL Server语言设置,只有一个转换为十进制。

如果该字段可以包含垃圾,请记住ISNUMERIC将告诉您货币符号、制表符、新行、+和-是数字。