我需要从字符串值中提取数字值,然后将该值转换为十进制类型。我需要从该字段中减去另一个值。我的查询是:
SELECT TOP (1000)
substring([Expected Charges],(PATINDEX('%[123456789]%',[Expected Charges])),9) as 'Expected Charges',
[Expected Charges] as 'Expected Charges 2'
FROM [AX_2C_Prod_DW].[dbo].[AAATRANSPORTTABLE_V]
我的输出是:
Expected Charges Expected Charges 2
9991 TOTAL CHARGES: 000000009991
9991 TOTAL CHARGES: 000000009991
我需要以下输出:
Expected Charges Expected Charges 2
99.91 TOTAL CHARGES: 000000009991
99.91 TOTAL CHARGES: 000000009991
我尝试将convert函数添加到我的查询中:
SELECT TOP (1000)
convert(decimal(18,2),substring([Expected Charges],(PATINDEX('%[123456789]%',[Expected Charges])),9)) as 'Expected Charges',
[Expected Charges] as 'Expected Charges 2'
FROM [AX_2C_Prod_DW].[dbo].[AAATRANSPORTTABLE_V]
但它产生了以下结果:
Expected Charges Expected Charges 2
9991.00 TOTAL CHARGES: 000000009991
9991.00 TOTAL CHARGES: 000000009991
答案 0 :(得分:2)
LEFT(substring([Expected Charges],(PATINDEX('%[123456789]%',[Expected Charges])),9),LEN(substring([Expected Charges],(PATINDEX('%[123456789]%',[Expected Charges])),9))-2)+'.'+RIGHT(substring([Expected Charges],(PATINDEX('%[123456789]%',[Expected Charges])),9),2) as 'Expected Charges'
答案 1 :(得分:1)
除非我缺少任何东西,否则我认为您可以做到
cast(cast(replace(col,'TOTAL CHARGES:','') as decimal(10,2))/100 as decimal (10,2))