栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

在WHERe子句过滤掉错误值之前,将执行SELECT中的MSSQL cast([varcharColumn]到int)

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

在WHERe子句过滤掉错误值之前,将执行SELECT中的MSSQL cast([varcharColumn]到int)

首先,这不是一个“明显的设计问题”。SQL是输出的描述性语言,而不是指定如何进行练习的过程性语言。通常,不能保证处理顺序,这是一个优势。我可能会说存在一个设计问题,但这是有关SQL语句中异常的一般处理。

根据SQL Server文档(http://msdn.microsoft.com/zh-cn/library/ms181765.aspx),
对于标量表达式 ,您可以依赖CASE语句的评估顺序。因此,以下应该工作:

select (case when isnumeric(c.varcharColumn) = 1 then cast(c.varcharColumn as int) end)

或者,更接近“ int”表达式:

select (case when isnumeric(c.varcharColumn) = 1 and c.varcharColumn not like '%.%' and c.varcharColumn not like '%e%'  then cast(c.varcharColumn as int)        end)

至少您的代码正在执行显式的CAST。当强制转换是隐式的(并且有数百列)时,这种情况更加糟糕。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/614484.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号