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

标签 mysql sql

我有一张英国邮政编码表。它们都有不同的格式,有些大写并带有空格,有些则不是。我想要做的是格式化它们,以便它们可以遵循英国邮政编码标准。例如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

关于mysql - 在最后三个字符之前插入空格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53592625/

相关文章:

mysql - 将表项列为 VB 的字符串

PHP while 循环返回空结果

mysql - volatile 数据查询优化

php - mysql 显示表中添加的所有行

mysql - 如何在FROM子句中更新目标表?

mysql - 有什么办法可以在 MySQL 中得到这个结果顺序吗?

mysql - GROUP_CONCAT() 中相同数据的相同输出

sql - jOOQ - CTE 和 INSERT

php - 使用 PHP 更新 sql 表中的字段

sql - 在没有子查询或子表的情况下按解析函数结果过滤