【问题标题】:Convert comma separated varchar to numeric without replace将逗号分隔的 varchar 转换为数字而不替换
【发布时间】:2014-09-04 15:57:39
【问题描述】:

在 t-sql 中是否有任何方法可以从 varchar 中获取,例如 12,3 数字参数 12.3 而无需使用

    select cast(replace('12,3',',','.') as numeric(12,2))
    select cast(cast('12,3' as money) as numeric(12,2))/10

类似

    ALTER SESSION SET NLS_NUMERIC_CHARACTERS =',' 

在 Oracle PL/SQL 中。

【问题讨论】:

  • 嗯,通常的答案是“不要将数字存储为字符串”。你为什么这样做?
  • 我需要解析包含许多数字参数的json。
  • 您在 T-SQL 中解析 JSON?我认为您为该任务选择了错误的技术 :) 您可能应该在服务器代码中处理它,或者如果您确实需要在 MS SQL 中存储文档,您应该使用 XML 而不是 JSON - XML 是 MS SQL 中的本机,不像 JSON。

标签: sql-server tsql sql-server-2012 decimalformat


【解决方案1】:

从 SQL Server 2012 开始,您可以将 PARSE 与使用逗号作为小数分隔符的区域性结合使用。

select parse('12,3' as numeric(12,2) using 'sv-SE')

【讨论】:

    猜你喜欢
    • 2014-03-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-20
    • 1970-01-01
    • 1970-01-01
    • 2017-06-04
    • 1970-01-01
    相关资源
    最近更新 更多