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

How can I convert text with a localized number format into a number in MS SQL Server?(如何将具有本地化数字格式的文本转换为 MS SQL Server 中的数字?)
本文介绍了如何将具有本地化数字格式的文本转换为 MS SQL Server 中的数字?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

假设我有一个德国数字格式1,00"的数字,在 en-US 语言环境中等于 1.0.

Let's say I have a number in the german number format "1,00" which is equal to 1.0 in the en-US locale.

是否有内置的方法可以将 T-SQL 中的此文本转换为相应的数字?似乎 CONVERT 和 CAST 只接受带有 '.' 的数字.作为小数点分隔符,我认为没有办法告诉他们.

Is there a built-in way to convert this text in T-SQL to the corresponding number? It seems like CONVERT and CAST accept only numbers with '.' as the decimal separator and I see no way to tell them otherwise.

我正在考虑简单地用 '.' 替换 ','但是如果我有一个像1.000,00"这样的带有千位分隔符的德语数字,这会变得很难看.

I was thinking about simply replacing ',' with '.' but this gets ugly if I have a german number with thounsands separator like "1.000,00".

在检索到错误"的 SQL 结果后进行转换不是一种选择.

Doing the conversion after retrieving the "wrong" SQL result is not an option.

推荐答案

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

If you want to do this inside SQL Server, then you will have to create a CLR stored procedure/user-defined function which will take the string as a parameter and return the numeric type that you desire. You might also want to take a parameter that indicates what region names (en-US for example) you might want to use to indicate the culture to use for determining the parsing pattern.

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

Then, in the code, you would call the TryParse method on Double/Decimal/Int32 and use the appropriate CultureInfo to indicate the parse pattern. You can cycle through a bunch of them, or use some other information to determine the right pattern.

这篇关于如何将具有本地化数字格式的文本转换为 MS SQL Server 中的数字?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!

本站部分内容来源互联网,如果有图片或者内容侵犯您的权益请联系我们删除!

相关文档推荐

Execute complex raw SQL query in EF6(在EF6中执行复杂的原始SQL查询)
Hibernate reactive No Vert.x context active in aws rds(AWS RDS中的休眠反应性非Vert.x上下文处于活动状态)
Bulk insert with mysql2 and NodeJs throws 500(使用mysql2和NodeJS的大容量插入抛出500)
Flask + PyMySQL giving error no attribute #39;settimeout#39;(FlASK+PyMySQL给出错误,没有属性#39;setTimeout#39;)
auto_increment column for a group of rows?(一组行的AUTO_INCREMENT列?)
Sort by ID DESC(按ID代码排序)