admin

如何将具有本地化数字格式的文本转换为MS SQL Server中的数字?

sql

假设我有一个德国数字格式为“ 1,00”的数字,在美国语言环境中该数字等于1.0。

是否有内置方法将T-SQL中的此文本转换为相应的数字?好像CONVERT和CAST只接受带’。’的数字。作为小数点分隔符,否则我看不到其他任何方法。

我当时正在考虑将“,”简单地替换为“。”。但是如果我的德语数字带有thounsands分隔符(例如“ 1.000,00”),这将变得很难看。

检索“错误的” SQL结果后进行转换不是一种选择。


阅读 276

收藏
2021-07-01

共1个答案

admin

如果要在SQL
Server中执行此操作,则必须创建CLR存储过程/用户定义函数,该函数将字符串作为参数并返回所需的数字类型。您可能还需要使用一个参数,该参数指示您可能要使用哪些区域名称(例如,en-
US)来指示用于确定解析模式的区域性。

然后,在代码中,您将在Double / Decimal /
Int32上调用TryParse方法,并使用适当的CultureInfo指示解析模式。您可以循环浏览一堆,或者使用其他信息来确定正确的模式。

2021-07-01