对于表格中的列,我想添加领先和&一次性跟踪列的所有值的空格。例如,table Employee(Name varchar(5))
。由于表中每行都有5
个字符,因此在执行查询时,它应该连续更新为7
个字符。事实上领先&应将尾随空格填充到列中的值。
我需要一个SQL查询。
答案 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)时,“VAR”部分修剪前导空格。使NCHAR(20)解决了这个问题。 DB2数据库删除了空格,所以我在这方面遇到了问题。