SQL SERVER
TABLE_A
Col_ID varchar
10002
34
01
abcde
前期设计和后期需求有偏差。现在想寻找COL_ID是数字的且有数字范围参数的字段
SQL_1:
SELECT CONVERT(INT,Col_ID) COL_ID_NUM, Col_ID FROM TABLE_A WHERE ISNUMERIC(Col_ID)=1
这条语句是没有问题可以执行。
SQL_2:
SELECT * FROM (SELECT CONVERT(INT,Col_ID) COL_ID_NUM,Col_ID FROM TABLE_A WHERE ISNUMERIC(Col_ID)=1 ) A
WHERE A.COL_ID_NUM >2
这条语句就报错了,说 字段COD_ID中abcde转换成INT错误。
按照我的理解SQL_2中
先执行SELECT CONVERT(INT,Col_ID) COL_ID_NUM, Col_ID FROM TABLE_A WHERE ISNUMERIC(Col_ID)=1 并生成临时表V1,然后在V1中执行COL_ID_NUM >2。这样应该已经把COL_ID=abcde删除掉了。
请大牛指点。谢谢