我可以在 SQL 中的 SET 操作期间以这种方式使用 Replicate 吗?

Can I use Replicate in this manner during a SET operation in SQL?

我正在尝试使用以下 SQL 查询向 table 中的数据添加一些字符

UPDATE NAMES
SET FULL_NM = LTRIM(RTRIM(FULL_NM)) + REPLICATE('A', (SELECT max_length FROM sys.tables t2
                INNER JOIN sys.columns c
                    ON c.object_id = t2.object_id
                    where t2.name = 'NAMES' and c.name = 'FULL_NM') -LEN(FULL_NM))

NAMES table 有一个全名列,长度为 200,我想用 A 填充 space 的其余部分。当我 运行 一个执行 REPLICATE 并在实际数据旁边显示结果的 select 查询时,它工作正常,我看到原始数据,以及填充长度的 A 数据。

运行 UPDATE 语句我收到关于以下内容的错误:

Msg 8152, Level 16, State 13, Line 1 String or binary data would be truncated. The statement has been terminated.

我不确定长度会变得太长,除非 REPLICATE 没有按照我设置的方式正常工作。有没有办法让这个更新语句起作用?

select character_maximum_length from databasename.[information_schema].columns
 where table_name = 'NAMES' and column_name = 'FULL_NM'

UPDATE NAMES
SET FULL_NM = LTRIM(RTRIM(FULL_NM)) + REPLICATE('A', (select character_maximum_length from databasename.[information_schema].columns
 where table_name = 'NAMES' and column_name = 'FULL_NM') -LEN(FULL_NM)-1)