排除要转换为十进制的字符

时间:2017-05-23 22:06:00

标签: sql sql-server

我有一个像这样的插页

INSERT INTO (keyMolde, nEficiencia, nCavidades )
VALUES (Origen.keyMolde, Origen.nEficiencia, 
        CASE WHEN CAST(Origen.sCavidades AS INT) = Origen.sCavidades 
                THEN Origen.sCavidades  
                ELSE CAST(Origen.sCavidades AS Numeric(12, 0)) 
        END);

问题进入Origen.nEficiencia,我得到的值如下:290%91%,我需要将其转换为91.0290.0

我该如何转换它?此致

1 个答案:

答案 0 :(得分:1)

您可以使用REPLACE功能

REPLACE (Origen.nEficiencia, '%', '.0')

INSERT (keyMolde, nEficiencia, nCavidades )
VALUES (Origen.keyMolde, 
        CAST(REPLACE (Origen.nEficiencia, '%', '.0') AS decimal(18,2)), 
        CASE WHEN CAST(Origen.sCavidades AS INT) = Origen.sCavidades 
             THEN Origen.sCavidades  
             ELSE CAST(Origen.sCavidades AS Numeric(12,0)) 
        END);

<强>更新

create table test(val varchar(20));
insert into test values
('90%'),('91%'),('23% AUMA');
GO
SELECT CAST(REPLACE(REPLACE(val, 'AUMA', ''), '%', '.0') AS decimal(18,2))
FROM   test;
GO
| (No column name) |
| :--------------- |
| 90.00            |
| 91.00            |
| 23.00            |

dbfiddle here