SQL Server 将字符串列值连接到 5 个字符长

标签 sql sql-server database

场景:

我有一个表 1(col1 char(5)); table1 中的值可能为“001”或“01”或“1”。

要求:

无论 col1 中的值是什么,我都需要以 5 个字符的长度检索它,并与前导“0”连接以使其长度为 5 个字符。

我应用的技术:

select right(('00000' + col1),5) from table1; 

我没有看到任何原因,为什么它不起作用?但它没有。 任何人都可以帮助我,我怎样才能达到预期的结果?

最佳答案

由于您使用的是固定宽度的列,因此它的大小已经是 5(带有空格)。你需要修剪它:

DECLARE @table1 TABLE (col1 char(5))

INSERT INTO @table1 (col1) VALUES ('12345')
INSERT INTO @table1 (col1) VALUES ('1')

SELECT RIGHT('00000'+RTRIM(col1),5) FROM @table1

-- Output:
-- 12345
-- 00001

或者使用 varchar 代替:

DECLARE @table2 TABLE (col1 varchar(5))

INSERT INTO @table2 (col1) VALUES ('12345')
INSERT INTO @table2 (col1) VALUES ('1')

SELECT RIGHT('00000'+col1,5) FROM @table2

-- Output:
-- 12345
-- 00001

关于SQL Server 将字符串列值连接到 5 个字符长,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2573299/

相关文章:

php - 获取组/线程/主题的 N 行

php - Zend_Db_Adapter_Oracle : Select with ORDER BY, 限制和位置

mysql - MySQL 8.0 存储过程中出现错误 1064

sql-server - 使用 hadoop 的 SQL Server 2016 polybase 错误

sql-server - 没有主键的表

database - 如何在 Jetbrain 的 Datagrip 中以字符串 UUID 格式显示 MongoDB UUID 二进制 ID 列

java - 尝试将数据从 Activity 发送到类时出现空指针异常

mysql - SQL/自连接/下属数量

java - Java如何执行多条SQL语句?

database - 文档存储的推荐位置 - 在数据库中还是在其他地方?