似乎SQL Server does not accept numbers formatted使用任何特定的语言环境。 它也不支持具有 0-9 以外的数字的区域设置。
例如,如果当前区域设置为bengali,则数字 123456789 将显示为“1২3456789”。这只是数字,不管数字分组是什么。
但不变区域设置中的数字也会出现同样的问题,它将数字格式设置为“123,456,789”,SQL Server将不接受这些数字。
是否存在与SQL Server接受的数值相匹配的文化?或者我是否必须创建一些自定义的“sql server”文化,自己从较低级别的格式化程序生成该文化的规则?
如果我在 .NET (我不是),我可以仔细阅读Standard Numeric Format strings。 .NET中可用的格式代码:
只接受所有数字类型:
在那些只有2个生成字符串表示的情况下,无论如何, en-US 语言环境都会被SQL Server接受:
在其余两个中,fixed取决于区域设置的数字,而不是正在使用的数字,只留下一般g格式:
我甚至无法确定 g 格式不会添加数字分组(例如1,234)。
是否存在以SQL Server期望的方式格式化数字的语言环境?是否有.NET格式代码?一个java格式的代码?一个Delphi格式的代码? VB格式代码?一个stdio格式代码?
拉丁数字位数
答案 0 :(得分:3)
constants的SQL Server规范描述了T-SQL表达式和批处理中可接受的格式:
整数常数由一串不是的数字表示 用引号括起来,不要 包含小数点。整数 常数必须是整数;他们 不能包含小数。
十进制常量由一串不是的数字表示 用引号括起来 包含小数点。
float 和真实常量使用scientific表示 符号
money 常量表示为带有可选项的数字字符串 小数点和可选货币 符号作为前缀。货币常数是 没有用引号括起来。 SQL 服务器不强制执行任何类型的操作 分组规则,例如插入 逗号(,)每三位数字 代表金钱的字符串。逗号 被忽略在指定的任何地方 钱文字。
要指示数字是正还是否定,请将+或 - 一元运算符应用于数字常量。这将创建一个表示有符号数值的数字表达式。当未应用+或 - 一元运算符时,数字常量使用正数。
好消息是客户端应用程序不需要担心这些要求。客户端应用程序应将数值作为 @parameters 传递,而不是作为T-SQL文字常量传递。