Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server nvarchar sql server中的楼层/天花板_Sql Server_Sql Server 2008 - Fatal编程技术网

Sql server nvarchar sql server中的楼层/天花板

Sql server nvarchar sql server中的楼层/天花板,sql-server,sql-server-2008,Sql Server,Sql Server 2008,我有一个字段名Price3,它的类型是nvarchar(50)。现在,当我获取字段时,我需要应用floor/ceil,以获得预期的输出。 输入->输出 123欧元->123.00欧元 123.1223欧元->123.12欧元 123.1267欧元->123.13欧元 有多个货币与价格3字段关联,表示欧元不是静态的 我尝试了选择子字符串(Price3,0,CHARINDEX('.',Price3)+3)作为Price3MS SQL 2012(及更高版本) 在获得子字符串以及CONCAT后,您

我有一个字段名
Price3
,它的类型是
nvarchar(50)
。现在,当我获取字段时,我需要应用
floor/ceil
,以获得预期的输出。

输入->输出
123欧元->123.00欧元
123.1223欧元->123.12欧元
123.1267欧元->123.13欧元


有多个货币与价格3字段关联,表示欧元不是静态的

我尝试了
选择子字符串(Price3,0,CHARINDEX('.',Price3)+3)作为Price3

MS SQL 2012(及更高版本)

在获得
子字符串
以及
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
转换它,然后使用+

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

如果所有货币都按空格计价。那么这个例子就行了

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
  )

从一开始就应该使用正确的数据类型的一个主要示例。但是,如果您的货币始终为欧元或一组有限的货币,则可以将货币替换为空字符串,然后将结果转换为正确的数据类型,以便您可以对该结果使用下限/上限操作。有多个货币与Price3字段相关联@AllanS.Hansenh如何将字符串转换为数字“EUR 123”?您将如何管理货币代码?@MannanBahelim更新了我的答案“CONCAT”不是公认的内置函数name@MannanBahelim这是在2012+年,问题有sql server 2012标记。在发表评论之前,至少进行谷歌搜索。@MannanBahelim我已经用其他版本的SQL Server的解决方案更新了我的答案。当我们设置@price3='EUR 123'时,我希望输出'EUR 123.00',您可以使用格式字符串来获取您想要的内容,或者将其转换为货币