我建议使用REPLICATE() 和LEN() 函数,如下所示:
DECLARE @Table TABLE (NAME VARCHAR(15))
INSERT INTO @Table (Name) VALUES ('John')
INSERT INTO @Table (Name) VALUES ('Jeremiah')
INSERT INTO @Table (Name) VALUES ('Jehosaphat')
SELECT
Name,
Name + REPLICATE('A', 15-LEN(Name))
FROM @Table
另一个示例是使用LEFT() 函数来确定返回字符串的大小,该字符串由您的值和连接的文本组成。这是这样做的一种方法,这次是在INSERT 方面:
DECLARE @Table TABLE (NAME VARCHAR(15))
INSERT INTO @Table (Name) (SELECT LEFT('John' + REPLICATE('A', 15), 15))
INSERT INTO @Table (Name) (SELECT LEFT('Jeremiah' + REPLICATE('A', 15), 15))
INSERT INTO @Table (Name) (SELECT LEFT('Jehosaphat' + REPLICATE('A', 15), 15))
SELECT
Name
FROM @Table
编辑 1:
下面的代码将在插入后更新您的数据 - 因为从逻辑上讲,直到您加载所有记录之后,您才会知道最大长度是多少,所以我将插入名称,然后在事后返回更新它们。
-- Prepare data
DECLARE @Table TABLE (NAME VARCHAR(50))
INSERT INTO @Table VALUES ('John'), ('Jeremiah'), ('Jehoshephat'), ('John Jacob Jingleheimer Schmidt')
-- Check it: a set of names with varying values
SELECT Name
FROM @Table
-- Determine and store the maximum character length
DECLARE @MaxLen INT
SET @MaxLen = (SELECT MAX(LEN(NAME)) FROM @Table)
-- update each record to pad with 'A' until the maximum character length is reached
UPDATE @Table
SET NAME = NAME + REPLICATE('A', @MaxLen - LEN(NAME))
-- Confirm it works as expected
SELECT *
FROM @Table