繁体   English   中英

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

[英]Padding with leading and trailing spaces all values of column in SQL

对于表中的一列,我想一次性向该列的所有值添加前导和尾随空格。 例如, table Employee(Name varchar(5)) 由于表格连续5字符,在执行查询时,表格应连续更新为7字符。 实际的前导和尾随空格应填充到该列中的值。

我需要一个SQL查询。

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

如果要更新表

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

在Oracle中,这将在“名称”列中每个值的前面放置一个空格,并在其右边填充空格,其总长度为7个字符:

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

您需要先更改表格以容纳额外的空间。

alter table employee
modify
name varchar2(7);
UPDATE EMPLOYEE
SET Name = ' ' || Name || ' '

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

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

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

数据来自哪里? 如果您将列的宽度固定,则源数据中的任何前导空格都应保留。 (免责声明:我使用的是SQL Server 2012,而不是Oracle。)我遇到了一个问题,我正在将数据从SQL Server发送到AS400 DB2数据库,并且从数据运行的程序希望某些列中的内容对齐。 修剪前导空格会使整行未对齐。 当我的SQL Server数据类型为NVARCHAR(20)时,“ VAR”部分会修剪前导空格。 使它成为NCHAR(20)可以解决该问题。 但是,DB2数据库除去了空格,因此我在这方面遇到了问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM