将数值从varchar数据类型转换为十进制时出错
select
case PCI1__c
when ISNUMERIC(rtrim(ltrim(PCI1__c)))
then convert(decimal(10, 2), PCI1__c)
else null
end as PCI1__c
from
MX_CREDIT_ANALYSIS;
Fyi,此列包含“无收入”,“两个”,“ revenue22”,“ 5.5”之类的值
获取错误:
将varchar值'5.5'转换为数据类型int时转换失败。
答案 0 :(得分:1)
isnumeric()
返回一个fs.writeFileSync
,因此当您执行integer
时,CASE pci1__c WHEN isnumeric(...) ...
(即一个pci1__c
)将与一个{{1} }。为了能够进行比较,DBMS希望将varchar
转换为integer
。由于(预期)varchar
表示形式不包含小数点,因此失败。
自2012年try_convert()
起可用。它将在可能的情况下进行转换,否则返回integer
。
integer
答案 1 :(得分:0)
如果您想使用CASE
,那么
查询
select
case when ISNUMERIC(rtrim(ltrim([PCI1__c]))) = 1
then convert(decimal(10, 2), PCI1__c)
else null end as PCI1__c
from [MX_CREDIT_ANALYSIS];