【发布时间】: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