我将SQL Server 2005数据库设置为locale Turkish_CI_AS。 SQL Server的PC的区域设置设置为土耳其语。土耳其小数分隔符是“,”,千位分隔符是“。”。有一个数据类型为decimal(14,3)的字段,它有一个值为“400,123”的记录(即400个)。当我在SQL Manager中使用Open Table时,结果网格中的值是正确的。但是当我在SQL查询窗口中查询表时,结果值为“400.123”,这是错误的。我在Linq查询结果中也得到了错误的结果。我该怎么做才能得到正确的值?
答案 0 :(得分:0)
尝试将表列更改为specife collation_name 像Alter专栏myNogoodColation Collate Turkish_BIN
在这里寻求帮助:ms-help://MS.SQLCC.v9/MS.SQLSVR.v9.en/tsqlref9/html/56483d24-add7-483d-9b96-c6fda460ddbc.htm
COLLATE {| database_default} :: = {Windows_collation_name} | {SQL_collation_name}
答案 1 :(得分:0)
您使用的登录名的默认语言是什么? 您可以通过选择sys.server_principals来检查它,或者如果您没有权限在该视图中查看登录,请询问DBA http://msdn.microsoft.com/en-us/library/ms188786.aspx
答案 2 :(得分:0)
我离开这个地方的唯一方法是将小数转换为字符串,将点替换为空(也就是空字符串),然后用逗号替换逗号。 如在
Replace(Replace(Cast(<value> as varchar(14)), '.', ''), ',', '.')
不优雅但有助于从Excel转换到我到目前为止遇到问题的SQL服务器。