Mik*_*keM 2 t-sql derived-table isnumeric sql-server-2008
这是一个示例查询:
DECLARE @table table (loc varchar(10))
INSERT INTO @table VALUES
('134a'), ('123'), ('abc'), ('124')
SELECT *
FROM (
SELECT * FROM @table WHERE ISNUMERIC(loc) = 1
) as a
WHERE CAST(loc as INT) BETWEEN 100 AND 200
Run Code Online (Sandbox Code Playgroud)
如果我有一些varchar值,并且我ISNUMERIC在查询中的派生表中使用它们将它们限制为数值,为什么会导致转换错误?:
将varchar值'134a'转换为数据类型int时转换失败.
有没有解决的办法?
该WHERE子句首先执行.尝试:
DECLARE @table table (loc varchar(10))
INSERT INTO @table VALUES
('134a'), ('123'), ('abc'), ('124')
SELECT *
FROM (
SELECT * FROM @table
) as a
WHERE ISNUMERIC(loc) = 1 and CAST(loc as INT) BETWEEN 100 AND 200
Run Code Online (Sandbox Code Playgroud)