假设我有一个德国数字格式为“ 1,00”的数字,在美国语言环境中该数字等于1.0。
是否有内置方法将T-SQL中的此文本转换为相应的数字?好像CONVERT和CAST只接受带’。’的数字。作为小数点分隔符,否则我看不到其他任何方法。
我当时正在考虑将“,”简单地替换为“。”。但是如果我的德语数字带有thounsands分隔符(例如“ 1.000,00”),这将变得很难看。
检索“错误的” SQL结果后进行转换不是一种选择。
如果要在SQL Server中执行此操作,则必须创建CLR存储过程/用户定义函数,该函数将字符串作为参数并返回所需的数字类型。您可能还需要使用一个参数,该参数指示您可能要使用哪些区域名称(例如,en- US)来指示用于确定解析模式的区域性。
然后,在代码中,您将在Double / Decimal / Int32上调用TryParse方法,并使用适当的CultureInfo指示解析模式。您可以循环浏览一堆,或者使用其他信息来确定正确的模式。