【问题标题】:Update query updating only 100 characters to database from 153 characters更新查询仅将 100 个字符从 153 个字符更新到数据库
【发布时间】:2022-11-19 00:36:45
【问题描述】:

我有一个更新语句,将更新数据库中的一列。 该列定义为varchar(500),字符串包含 153 个字符。

但是在更新时,它只更新了 100 个字符。

演示脚本如下

SET @parameter_additional_info = '{optionsUrl:"/api/customparameter/reports/getReportFactoryHeaderTemplate" ,displayProperty : "displayName", valueProperty:"reportFactoryHeaderFooter" }' 

IF (SELECT COUNT(*) 
    FROM [dbo].[t024_report_parameters] 
    WHERE report_id = @report_id 
      AND client_id = @client_id 
      AND report_name = @reportname 
      AND param_id = @header_options_param_id) > 0
BEGIN
    UPDATE [dbo].[t024_report_parameters]
    SET parameter_additional_info = @parameter_additional_info
    WHERE report_id = @report_id 
      AND client_id = @client_id 
      AND report_name = @reportname 
      AND param_id = @header_options_param_id
END

更新后它在数据库中仅显示 100 个字符,如下所示

{ optionsUrl:"/api/customparameter/reports/getReportFactoryHeaderTemplate" ,displayProperty : "displa

In the database, the column is defined long enough

我尝试更新表的架构,但这没有用。

【问题讨论】:

  • @parameter_additional_info的数据类型是什么?
  • 此外,我强烈建议为您的 2(?)实例确定并实施这些升级计划。 2008和2008R2都已经完全地现在已经超过 3 年不受支持
  • 在更高版本的 SQL Server 中,IF (SELECT Count(*)..) > 0 会自动优化为 if exists() - 我认为 SQL Server 2008 中不是这种情况,因此您查询的可能是计算所有符合条件的行,而不是仅检查 1排位赛。升级到受支持的版本应该在你的雷达上。

标签: sql sql-server-2008 sql-update sql-server-2008-r2


【解决方案1】:

@parameter_additional_info 的长度似乎为 100。

例如,如果您这样做:

declare @test varchar(1)
set @test = 'abc'
select @test

它将截断 abc 并只返回 a,因为 @testvarchar(1)

【讨论】:

    猜你喜欢
    • 2020-01-12
    • 2012-01-11
    • 1970-01-01
    • 2014-12-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-22
    相关资源
    最近更新 更多