如何在 SQL 中将 nvarchar 转换为十进制

新手上路,请多包涵

如何在 SQL Server 中将 nvarchar 转换为十进制?

我需要将 '38,716.1311' 之类的值转换为 38716.1311。

我曾尝试使用此方法,但无法成功转换:

 DECLARE @TempValue NVARCHAR(100) = '38,716.1311'

SELECT
    CONVERT(DECIMAL(18, 2), @TempValue)

任何人都可以提出正确的查询吗?提前致谢

原文由 Arun D 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 387
2 个回答

只需在转换之前从字符串中删除逗号:

 Select CONVERT(DECIMAL(18,2),replace('38,716.1311', ',', ''))

原文由 Andrey Korneyev 发布,翻译遵循 CC BY-SA 3.0 许可协议

您的 nvarchar 值是特定于文化的。 (具有特定于文化的小数和千位分隔符)因此,您可以在传递正确的文化时使用 PARSE 方法。

 DECLARE @TempValue NVARCHAR(100) = '38,716.1311'

SELECT PARSE(@TempValue AS DECIMAL(18, 4) USING 'en-US')

原文由 Ε Г И І И О 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进