我需要在字符串中添加空格。
Original String: BM14401886
Expected Result: BM 14 4018 86
答案 0 :(得分:2)
可以使用LEFT
,SUBSTRING
,RIGHT
函数实现此目的。
SELECT LEFT('BM14401886',2)+' '+
SUBSTRING('BM14401886',3,2)+' '+
SUBSTRING('BM14401886',5,4)+' '+
RIGHT('BM14401886',2);
答案 1 :(得分:1)
我完全同意@ Ullas的回答。 但是根据标准,如果我们需要在查询中使用空格anywhare那么我们必须使用
Space(no of space)
在查看查询后,任何人都无法判断查询中使用了多少空格,它更具可读性。
这里的情况很简单但是如果你想在查询中使用10个空格,那么在查看查询中有多少空格后就无法说出来。
SELECT LEFT('BM14401886',2)+space(1)+
SUBSTRING('BM14401886',3,2)+space(1)+
SUBSTRING('BM14401886',5,4)+space(1)+
RIGHT('BM14401886',2);
答案 2 :(得分:0)
我想你想要这个:
select substring(val,1,2) + ' ' + substring(val,3,2) + ' ' +
substring(val,5,4) + ' ' + substring(val,9,2) as val
from yourtable
Sql fiddle:http://sqlfiddle.com/#!3/e075f/3
答案 3 :(得分:0)
就我个人而言,我并不喜欢使用LEFT
,RIGHT
和SUBSTRING
这样的事情,因为它会使SQL看起来很乱。
如果在存储过程中使用单个值进行一次性操作,则可以执行以下操作:
declare @somestring as varchar(20) = 'BM14401886'
declare @position as int = 3 -- first space
while @position < LEN(@somestring)
begin
select @somestring = stuff(@somestring, @position, 0, ' ')
set @position = @position + 3
end
select @somestring as Result -- 'BM 14 40 18 86'
我假设您在返回多行时可能希望在表列上执行此操作,在这种情况下,我会将此代码放在您可以调用的函数中。
create function AddSpacesToString (@somestring VARCHAR(20)) returns varchar(20)
as
begin
declare @position as int = 3 -- first space
while @position < LEN(@somestring)
begin
select @somestring = stuff(@somestring, @position, 0, ' ')
set @position = @position + 3
end
return @somestring
end
go
所以SELECT
语句看起来不像LEFT
,RIGHT
和SUBSTRING
:
SELECT dbo.AddSpacesToString ([YourColumn]) as FormattedString
FROM [YourTable]