小编npj*_*hns的帖子

IsNumeric失败并显示"当前命令发生严重错误".SQL Server 2014 CTE

我正在运行一系列生成数据库的脚本.它们在SQL Server 2012(11.0.5058.0)上运行完成.在SQL Server 2014(12.0.4213.0)上,脚本错误:

消息0,级别11,状态0,行0
当前命令发生严重错误.结果(如果有的话)应该被丢弃.

消息0,级别20,状态0,行0
当前命令发生严重错误.结果(如果有的话)应该被丢弃.

看来,IsNumeric在CTE查询中使用语句的结果会破坏查询构建,因为不需要行来导致错误.我遇到的案例的简化版本是:

CREATE TABLE #Temp1 ( CTECol VARCHAR );
CREATE TABLE #Temp2 ( NumCol Int null);
;
WITH cte AS 
(
    SELECT 
        CASE WHEN ISNUMERIC(t.CTECol) = 1 
                THEN 1 
                ELSE null
        END as IsNCol1
    FROM
        #Temp1 t
)
SELECT * 
FROM #Temp2 
JOIN cte ON #Temp2.NumCol = cte.IsNCol1
Run Code Online (Sandbox Code Playgroud)

我能找到的最简单的案例是:

CREATE TABLE #Temp3 ( CTECol Int );
CREATE TABLE #Temp4 ( NumCol Int );
;
WITH cte AS 
(
    SELECT ISNUMERIC(t.CTECol) …
Run Code Online (Sandbox Code Playgroud)

sql-server isnumeric common-table-expression sql-server-2014

8
推荐指数
1
解决办法
424
查看次数