mysql - 如何在MySQL中的字符串的第二个大写字母前插入一个空格?

标签 mysql sql

我有一些来自第三方的数据,其中一列是名字和姓氏的串联 - 但中间没有空格。我的目标是在第二个大写字母之前插入一个空格,例如:

some_name
-------------
AdamPeterson
JohnSmith
StevenMulroy

会变成:

some_name
-------------
Adam Peterson
John Smith
Steven Mulroy

我知道这不是万无一失的,但这是我拥有的源数据所能获得的最好结果。

我需要在 SQL 而不是 Excel 等中执行此操作 - 因为数据会在数据库级别定期刷新,然后由另一个系统处理而无需先导出。

非常感谢任何帮助!

最佳答案

对于 Mysql 8

SELECT REGEXP_REPLACE(CAST('JohnLexxxanon' as BINARY), '^([A-Z][a-z]+)([A-Z][a-z]+)$', '$1 $2');

对于 MariaDb 10+

SELECT REGEXP_REPLACE(CAST('JohnLexxxanon' as BINARY), '^([A-Z][a-z]+)([A-Z][a-z]+)$', '\\1 \\2');

数据被转换为二进制以实现区分大小写。

这适用于 MySql 8 和 MariaDb 10+

关于mysql - 如何在MySQL中的字符串的第二个大写字母前插入一个空格?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54540378/

相关文章:

php - 对结果进行排序 mysql/php

sql - 获取始终为空的表的列名

mysql - 在 jruby 上安装 mysql 有很多错误

mysql - F# 连接到在线 MySQL DB 执行查询

java - 如何将数据存入MySQL数据库?

mysql - 在连接条件下使用函数,是否会因为缺少可用索引而导致全表扫描?

sql-server - SQL Server 2000,获取 COUNT(DISTINCT ID) 的条件是我无法写入 WHERE?

sql - 将转换后的 varchar 插入 datetime sql

PHP 脚本未在 MySQL 数据库中添加行

通过 shell 脚本的 MySQLDump 没有被执行,为什么?