使用逗号插入十进制被解释为两个值

时间:2012-06-18 07:54:04

标签: sql reporting-services decimal

我正在创建一个ssrs报告并创建一个mockdata sql脚本 在脚本中我想插入一个十进制值,如下所示:

declare @tempTable table(
  aString varchar(50),
  aDecimal decimal(5,2)
)

insert into @tempTable
values ("somestring", 1,23)

" someString"之后的值实际上是一个十进制值,逗号为小数分隔符。 SQL将此解释为单独的值,因此会引发有关列数过多的错误。如何解决这个问题?

更新
澄清:我在一个地区,'。'是一千个分隔符','是小数点分隔符 把它放在引号之间也不起作用。它为我提供了Error converting data type varchar to numeric消息

3 个答案:

答案 0 :(得分:2)

要在SQL脚本中指定数字作为常量,您应该遵循SQL 语法规则,而不是区域设置。语法规定您使用.作为小数分隔符。至于千分离器,根本不使用它们。

请注意,这严格来说是在脚本中编码您的数据,而不是显示它们。显示是您的区域设置重要的地方,如果它们按顺序排列,您应该相应地格式化输出:十进制分隔符作为逗号,千位分隔符作为句点。

答案 1 :(得分:1)

插入SQL时,逗号用于分隔值。我不知道这是什么类型的字段,但如果它是INT或DECIMAL它将无法工作。

为了让它正常工作,请在它们周围加上引号,如下所示:

insert into @tempTable
values ("somestring", '1,23')

最好的是:

  1. 如果是小数,请使用。以逗号为主,然后操纵字符串。
  2. 如果是1000-sepeartor,请将其删除,显示时可以执行此操作

答案 2 :(得分:0)

实际上添加参数为我解决了同样的问题。

cmd.CommandText = "INSERT dbo.tickets (places,date,client_id,price,trip_id) VALUES (" + PlaceQuontity.Value + ",@date "  + "," + id + "," + "@price" + "," + TripId + ")";

            cmd.Parameters.Add("@date", SqlDbType.Date).Value = TicketDate.Value.Date;
            cmd.Parameters.Add("@price", SqlDbType.Decimal).Value = FinalPrice;

其中 cmd 是我的 sql 命令,finalprice 是十进制。