我的情况是我有一个字段名称Price3
,其类型为nvarchar(50)
。现在,当我获取字段时,我需要应用floor/ceil
来获得预期的输出。
输入 - > 输出
123欧元 - > EUR 123.00
EUR 123.1223 - > EUR 123.12
EUR 123.1267 - > EUR 123.13
与Price3字段相关联的多种货币意味着EUR不是静态的
我试过了select SUBSTRING(Price3, 0,CHARINDEX ('.', Price3)+3)as Price3
答案 0 :(得分:3)
如果所有货币按空间分配值。然后这个例子工作
DECLARE @price3 NVARCHAR(50)
SET @price3 = 'EUR 123.9238'
SELECT
LEFT(@price3, CHARINDEX(' ', @price3)) + '->' + CAST(
ROUND(
CAST(
RIGHT(@price3, LEN(@price3) - CHARINDEX(' ', @price3)) AS MONEY
),
2
) AS NVARCHAR
)
答案 1 :(得分:-1)
MS SQL 2012(及更高版本)
获取CONVERT
和CAST
后,您可以使用SUBSTRING
或CONCAT
并获得所需的输出。
DECLARE @value4 varchar(50)='EUR 123';
SELECT CONCAT('EUR ',CONVERT(numeric(10,2),SUBSTRING(@value4,5,LEN(@value4)-3)));
MS SQL SERVER(早于2012年)
由于CONCAT
功能不可用。您必须手动CAST
或CONVERT
,然后使用+附加。
DECLARE @value varchar(50)='EUR 123';
SELECT 'EUR '+ CAST(CONVERT(numeric(10,2),ROUND(SUBSTRING(@value,5,LEN(@value)-3),2)) as VARCHAR(50));