在最后三个字符前插入空格

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在最后三个字符前插入空格相关的知识,希望对你有一定的参考价值。

我有一张英国邮政编码表。所有这些都是不同的格式,有些是大写的,而有些则不是。我想要做的就是格式化它们,以便它们可以遵循英国邮政编码标准。例如AB1 2BB

我使用此查询的目的确实有效,但是一些邮政编码的第一部分更长或更短,所以它并不能成功。

SELECT UPPER(INSERT((REPLACE(postcode , ' ', '')) , 4, 0, ' ')) AS postcode

但是,如果我尝试反过来这样做

SELECT UPPER(INSERT((REPLACE(postcode , ' ', '')) , -4, 0, ' ')) AS postcode

它不起作用并返回粘在一起的所有邮政编码,例如AB12BB

我想要的是在最后3个字符前加一个空格。

答案

我想你想要:

select concat_ws(' ',
                 left(replace(postcode, ' ', ''), 3),
                 right(replace(postcode, ' ', ''), 3
                ) as standardized_postcode
另一答案

删除所有空格后,在字符串末尾的第3个字符处插入一个空格:

SELECT UPPER(INSERT(REPLACE(postcode , ' ', ''), LENGTH(REPLACE(postcode , ' ', '')) - 2, 0, ' ')) AS postcode
另一答案

听起来你将要处理这样的邮政编码:

LS10 1DH

LS101DH

LS63DR

我们应该从删除所有空格开始:

REPLACE(postcode,' ','') -- LS10 1DH becomes LS101DH

取最后3个字符:

RIGHT(REPLACE(postcode,' ',''), 3) -- 1DH

以及从最后到第3个的所有角色:

LEFT(REPLACE(postcode,' ',''), LEN(REPLACE(postcode,' ','')) - 3))

然后使用CONCAT将它们组合在一起:

SET @postcode = 'LS101DH';

SELECT CONCAT(LEFT(REPLACE(@postcode,' ',''), LENGTH(REPLACE(@postcode,' ','')) - 3),
    ' ', -- add a space in
    RIGHT(REPLACE(@postcode,' ',''), 3));

以上是关于在最后三个字符前插入空格的主要内容,如果未能解决你的问题,请参考以下文章

动态 Rstudio 代码片段

js代码 如何去掉字符串前的0

js代码 如何去掉字符串前的0

直接插入排序

C语言函数题,编写函数将输入字符串的前三个字母移到最后

Javascript在字符串的第n个位置插入空格