在nvarchar sql server中的Floor / Ceil

时间:2016-10-03 09:19:46

标签: sql-server sql-server-2008

我的情况是我有一个字段名称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

2 个答案:

答案 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(及更高版本)

获取CONVERTCAST后,您可以使用SUBSTRINGCONCAT并获得所需的输出。

DECLARE @value4 varchar(50)='EUR 123';
SELECT CONCAT('EUR ',CONVERT(numeric(10,2),SUBSTRING(@value4,5,LEN(@value4)-3)));

enter image description here

MS SQL SERVER(早于2012年)

由于CONCAT功能不可用。您必须手动CASTCONVERT,然后使用+附加。

DECLARE @value varchar(50)='EUR 123';
SELECT 'EUR '+ CAST(CONVERT(numeric(10,2),ROUND(SUBSTRING(@value,5,LEN(@value)-3),2)) as VARCHAR(50));

enter image description here