使用前导和尾随空格填充SQL中列的所有值

时间:2014-08-18 10:21:34

标签: sql database oracle db2 sybase

对于表格中的列,我想添加领先和&一次性跟踪列的所有值的空格。例如,table Employee(Name varchar(5))。由于表中每行都有5个字符,因此在执行查询时,它应该连续更新为7个字符。事实上领先&应将尾随空格填充到列中的值。

我需要一个SQL查询。

5 个答案:

答案 0 :(得分:2)

select ' '||Name||' ' from Employee

如果您想更新表格

update EMPLOYEE set Name = ' ' || Name || ' '

答案 1 :(得分:1)

在Oracle中,这将在" name"中的每个值前面放置一个空格。列,右边用空格填充,总长度为7个字符:

update employee
set name = rpad(' '||name,7);

您需要先改变桌子以容纳额外的空间。

alter table employee
modify
name varchar2(7);

答案 2 :(得分:0)

UPDATE EMPLOYEE
SET Name = ' ' || Name || ' '

答案 3 :(得分:0)

由于需要填充的列具有可变长度,因此我不认为在之前或之后对空间进行硬编码将是正确的解决方案。如果列中的数据长度为3,则在数据之前和之后填充1个空格仍将导致长度为5.由于OP未指定所有数据的长度是否为5,因此需要采用不同的方法。根据您希望添加空格的方式,您可以尝试以下操作(这会在数据之前添加1个空格并将剩余空格填充到最后):

Declare @Name varchar(5) = 'Bob'        
Select ' ' + @Name + REPLICATE(' ',(6 - LEN(@NAME))) as NewName

这导致名称前面有1个空格,后面有3个空格。

答案 4 :(得分:0)

数据来自哪里?如果使列的宽度固定,源数据中的任何前导空格都应该结转。 (免责声明:我在SQL Server 2012中工作,而不是Oracle。) 我有一个问题,我将数据从SQL服务器发送到AS400 DB2数据库,从数据运行的程序期望在某些列中排列。修剪前导空间错误地对齐整行。当我的SQL服务器数据类型为NVARCHAR(20)时,“V​​AR”部分修剪前导空格。使NCHAR(20)解决了这个问题。 DB2数据库删除了空格,所以我在这方面遇到了问题。