我有一个varchar
列,通常有一个十进制值,但有时在该字段中有一些垃圾文本字符。
是否可以在WHERE
子句中过滤成功转换为十进制值的行?
我正在使用sql-server 2005
答案 0 :(得分:8)
一种方法是ISNUMERIC功能:
select * from YourTable where ISNUMERIC(col1) = 1
有一个问题:只要字符串可以转换为任何数字类型,isnumeric
就会返回1,包括money
。例如,假设您有使用不同小数分隔符的行,例如7.9
和7,9
。两者都将转换为money
,isnumeric
将返回1。但只有一个转换为decimal
,具体取决于SQL Server语言设置。