首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Sql ISNUMERIC()

Sql ISNUMERIC()
EN

Stack Overflow用户
提问于 2016-05-12 14:20:23
回答 3查看 201关注 0票数 0
代码语言:javascript
复制
SELECT CASE WHEN ISNUMERIC('1a') =1 THEN 1 ELSE 'A' END

我知道这个错误了!!

将varchar值'A‘转换为数据类型int时,转换失败。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-05-12 14:41:14

您是来自BOL的数据类型precedence.Taken的受害者:

当运算符组合两个不同数据类型的表达式时,数据类型优先级规则指定优先级较低的数据类型转换为具有较高优先级的数据类型。如果转换不是支持的隐式转换,则返回错误。当两个操作数表达式具有相同的数据类型时,操作结果具有该数据类型。

因此,在您的示例中,大小写是一个表达式,当两个或多个数据类型在这个表达式中组合时,它返回最高precedence..in的数据类型--在这种情况下,是INT..So将查询更改为下面

代码语言:javascript
复制
SELECT CASE WHEN ISNUMERIC('1a') =1 THEN cast(1 as varchar) ELSE 'A' END
票数 1
EN

Stack Overflow用户

发布于 2016-05-12 14:23:25

代码语言:javascript
复制
SELECT CASE WHEN ISNUMERIC('1a') =1 THEN 1 ELSE 2 END
票数 0
EN

Stack Overflow用户

发布于 2016-05-12 14:27:40

代码语言:javascript
复制
SELECT CASE WHEN ISNUMERIC('1A') = 1 THEN '1' ELSE 'A' END

代码语言:javascript
复制
SELECT CASE WHEN ISNUMERIC('1A') =1 THEN '1' ELSE SUBSTRING('1A',2,2) END
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37189744

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档