选择无法转换的行

时间:2012-12-27 17:51:45

标签: sql-server tsql

在我的表格的一列中存储了住宅地址的编号。

不幸的是,我之前的同事并不是一个思考的粉丝所以他们创建了类型为varchar的列并且没有阻止对软件的输入......所以现在我被困在一堆行数中房子/公寓是“NI”,“Not Info”,“Unknown”等,而不是有意义的数字...

我想只选择不是数字的行......类似于select * from table where CAST(column as int)抛出异常

4 个答案:

答案 0 :(得分:7)

看一下IsNumeric, IsInt, IsNumber,你不能只使用isnumeric它会返回true - 标志和其他类似的东西

例如,返回1

SELECT ISNUMERIC('2d5'),
       ISNUMERIC('+')

答案 1 :(得分:3)

select * from table where ISNumeric(column)=0 

但它可能会给出误报.....

答案 2 :(得分:1)

试试这个:

SELECT * FROM table WHERE ISNUMERIC(column + 'e0') = 0

答案 3 :(得分:-1)

如果成功返回1,如果值不符合您的要求,则创建一个尝试强制转换以及您需要的任何其他逻辑的函数然后返回0.然后使用where子句中的函数