我可以在 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)
我正在尝试使用以下 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)