在SQL中填充空格

时间:2019-06-08 07:42:43

标签: sql

当数据长度未知时,如何在数据中添加空格?

选择字符数据时,我试图用空格填充数据,以使所返回的长度对于所有行都是相同的。对于实例,长度应始终保持15。

这最终将进入包含所有固定长度列的报告中,因此每个字段返回的数据大小必须一致。

需要用空格填充。

3 个答案:

答案 0 :(得分:1)

对于SQL Server,您可以执行以下操作:

-- Create a sample table
CREATE TABLE T(
  ID INT IDENTITY(1, 1),
  Str VARCHAR(15)
);
--Insert some data
INSERT INTO T (Str) VALUES
('abc'), --3 chars
('abcdefg'), --7 chars
('abcrfhtkidleoky'); -- 15 chars

--See the data
SELECT *, LEN(Str) LN
FROM T;

--Update the table to add spaces
UPDATE T
SET Str = CONCAT(REPLICATE(' ', 15 - LEN(Str)), Str) --Add spaces
WHERE LEN(Str) < 15;

--See the updates
SELECT *, LEN(Str) LN
FROM T;

第一个SELECT将返回:

+----+-----------------+----+
| ID |       Str       | LN |
+----+-----------------+----+
|  1 | abc             |  3 |
|  2 | abcdefg         |  7 |
|  3 | abcrfhtkidleoky | 15 |
+----+-----------------+----+

第二个SELECT(更新数据后)将返回:

+----+-----------------+----+
| ID |       Str       | LN |
+----+-----------------+----+
|  1 |    abc          | 15 |
|  2 |    abcdefg      | 15 |
|  3 | abcrfhtkidleoky | 15 |
+----+-----------------+----+

查看其在 Live Demo 上的工作方式。


对于SQLite,您可以执行以下操作:

CREATE TABLE T(
  Str VARCHAR(15)
);

INSERT INTO T VALUES
('abc'), --3 chars
('abcdefg'), --7 chars
('abcrfhtkidleoky'); -- 15 chars

SELECT *, LENGTH(Str) LN
FROM T;

UPDATE T
SET Str = Str || REPLACE(HEX(ZEROBLOB(15-LENGTH(Str))), '00', ' ')
WHERE LENGTH(Str) < 15;

SELECT *, LENGTH(Str) LN
FROM T;

答案 1 :(得分:1)

在任何数据库中,都可以转换为char()

select cast(col as char(15))

char()类型是固定长度,并用空格填充。

更典型的方法是用空格填充值。确切的方法因数据库而异。

答案 2 :(得分:0)

isnull([field],'')+SPACE(15-LEN(isnull([field],'')))