Sql server SQL插入到:逗号为十进制

Sql server SQL插入到:逗号为十进制,sql-server,internationalization,double,decimal,Sql Server,Internationalization,Double,Decimal,我的问题是,我的客户在Windows机器上运行SQL Server,并且国家/地区设置设置为“德国” 这意味着,小数点不是点,而是逗号 向数据库中插入一个双精度值的工作方式如下 INSERT INTO myTable (myPrice) VALUES (16,5) 到目前为止,效果很好 如果语句中有多个带小数位的值,则会出现问题,如 INSERT INTO myTable (myPrice, myAmount) VALUES (16,5,10) 我得到了错误 查询值和目标字段的数量不相同 我

我的问题是,我的客户在Windows机器上运行SQL Server,并且国家/地区设置设置为“德国”

这意味着,小数点不是点,而是逗号

向数据库中插入一个双精度值的工作方式如下

INSERT INTO myTable (myPrice) VALUES (16,5)
到目前为止,效果很好

如果语句中有多个带小数位的值,则会出现问题,如

INSERT INTO myTable (myPrice, myAmount) VALUES (16,5,10)
我得到了错误

查询值和目标字段的数量不相同

我能以某种方式“界定”这些值吗?尝试在周围添加括号,但此操作无效

不幸的是,我无法更改操作系统或数据库的语言设置,因为我正在为现有应用程序编写一些附加组件

谢谢大家!!
ev

您必须以数据库允许的格式输入数据。即使您使用逗号放置数据。。。你可以进行数值计算

如果我遇到这种情况。。我将检查逗号是否仅用于可见性。。然后我将以逗号格式显示值,同时以十进制格式存储它们

这样,数据可以很容易地作为数字处理。但只需要在UI或显示中来回更改它

基于此,如果需要,您可以更详细地描述您的情况

编辑:为了验证我的理论,您可以检查一下这个insert语句是否在数据库中插入了165或16.5

  INSERT INTO myTable (myPrice) VALUES (16,5);
  select from mytable where myprice <17;
插入myTable(myPrice)值(16,5);

从mytable中选择myprice,我发现很难相信第一次插入会起作用。您无法对它们进行分隔。为什么不直接用小数点而不是逗号传递值呢?“没有必要为这一点再加上一些其他的方法。”大卫格说,它不应该是十进制的。在德国,他们用逗号代替decimal@Shank是的,但是SQL Server不会像这样使用逗号,它必须是一个小数点。请看下面的例子,SQL Server仍然使用逗号来分隔字段。如果这个答案有用,请投赞成票。并分享决议。