如何确定字段是否为数字并转换为相同的where子句

时间:2014-11-25 00:49:22

标签: sql-server

我有以下简单的sql

SELECT TOP 1000 *
  FROM CallRecords
  where clientId = 4 and 
  resultcodeId > 1 and
  ISNUMERIC(extension) = 1 and 
  Convert(int,extension) > 72320 and Convert(int,extension) < 73000

我收到以下错误

Msg 245, Level 16, State 1, Line 2
Conversion failed when converting the nvarchar value 'b01004957003' to data type int.

显然,一个扩展名包含&#39; b01004957003&#39;

但是我认为sql会在ISNUMERIC(扩展名)= 1

之后停止检查

任何线索?

1 个答案:

答案 0 :(得分:1)

尝试将转换保留在外部查询

SELECT *
FROM   (SELECT TOP 1000 *
        FROM   CallRecords
        WHERE  clientId = 4
               AND resultcodeId > 1
               AND Isnumeric(extension) = 1) A
WHERE  CONVERT(INT, extension) > 72320
       AND CONVERT(INT, extension) < 73000