首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将以逗号作为小数分隔符的字符串数值转换为数值(10,2)

将以逗号作为小数分隔符的字符串数值转换为数值(10,2)
EN

Database Administration用户
提问于 2015-10-14 18:58:19
回答 3查看 130.9K关注 0票数 16

我有一个varchar列的SQL表,其中包含希腊格式的数字(。如千分隔符和逗号为十进制分隔符)

经典转换

代码语言:javascript
复制
CONVERT(numeric(10,2),REPLACE([value],',','.'))

不工作是因为。(千分隔符)杀死转换。

例如,尝试

代码语言:javascript
复制
CONVERT(numeric(10,2),REPLACE('7.000,45',',','.'))

我想将这些值转换为数字(10,2)

对如何处理它有什么建议吗?

EN

回答 3

Database Administration用户

回答已采纳

发布于 2015-10-14 19:16:28

(如果您使用的是Server 2012或更高版本,请参阅@wBob的回答以获得更清晰的方法。仅当您使用Server 2008 R2或更高版本时,才需要下面的答复中概述的方法。)

在转换为NUMERIC时,您不需要(或想要)数千个分隔符,无论是逗号、句号还是空格,所以先去掉它们。然后将逗号转换为句点/小数点,您就完成了:

代码语言:javascript
复制
SELECT CONVERT(NUMERIC(10, 2), 
               REPLACE(
                       REPLACE('7.000,45', '.', ''),
                       ',', '.'
                      )
              ) AS [Converted];

返回:

代码语言:javascript
复制
7000.45

为了完整起见,我应该指出,我也尝试过:

  • SET LANGUAGE Greek;
  • 查看转换的各种格式样式,但这里不适用。
  • 格式化函数,但输入类型必须是数字或日期/时间/日期时间值(它是在Server 2012中引入的,因此不适用于Server 2008 R2或更高版本)。

其他的似乎都没有用。我希望能找到比两个REPLACE调用更优雅的东西,但到目前为止还没有这样的运气。

另外,尽管不是纯T解决方案,但这也可以通过SQLCLR实现。而且,在我编写的SQL#库(我编写的)中有一个预先完成的函数,名为String_TryParseToDecimal。此函数可在免费版本中使用,并适用于Server 2005开始的每个Server版本:

代码语言:javascript
复制
SELECT SQL#.String_TryParseToDecimal('7.000,45', 'el-GR');

返回:

代码语言:javascript
复制
7000.45000000000000000000
票数 13
EN

Database Administration用户

发布于 2015-10-14 22:14:53

您使用的是什么版本的Server?从Server 2012开始,您可以使用试一试_解析及其USING culture参数。您也可以使用解析解析,如果转换失败,而TRY_PARSE将返回NULL,则区别是PARSE将失败。

代码语言:javascript
复制
DECLARE @t TABLE ( x VARCHAR(10) )

INSERT INTO @t
VALUES ( '7.000,45' ), ( 'xxx' )

SELECT x, 
    TRY_PARSE( x AS NUMERIC(10,2) USING 'El-GR' ) x
FROM @t

HTH

票数 13
EN

Database Administration用户

发布于 2018-05-30 16:16:14

以下代码适用于我的情况:

代码语言:javascript
复制
select convert(varchar,FORMAT(123456789.0258,'###,###,###.00','de-de'))

产出: 123.456.789,03

票数 -1
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/118057

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档