SELECT CASE WHEN ISNUMERIC('1a') =1 THEN 1 ELSE 'A' END我知道这个错误了!!
将varchar值'A‘转换为数据类型int时,转换失败。
发布于 2016-05-12 14:41:14
您是来自BOL的数据类型precedence.Taken的受害者:
当运算符组合两个不同数据类型的表达式时,数据类型优先级规则指定优先级较低的数据类型转换为具有较高优先级的数据类型。如果转换不是支持的隐式转换,则返回错误。当两个操作数表达式具有相同的数据类型时,操作结果具有该数据类型。
因此,在您的示例中,大小写是一个表达式,当两个或多个数据类型在这个表达式中组合时,它返回最高precedence..in的数据类型--在这种情况下,是INT..So将查询更改为下面
SELECT CASE WHEN ISNUMERIC('1a') =1 THEN cast(1 as varchar) ELSE 'A' END发布于 2016-05-12 14:23:25
SELECT CASE WHEN ISNUMERIC('1a') =1 THEN 1 ELSE 2 END发布于 2016-05-12 14:27:40
SELECT CASE WHEN ISNUMERIC('1A') = 1 THEN '1' ELSE 'A' END或
SELECT CASE WHEN ISNUMERIC('1A') =1 THEN '1' ELSE SUBSTRING('1A',2,2) ENDhttps://stackoverflow.com/questions/37189744
复制相似问题