MySQL 如果不存在句点,则在名称首字母中添加句点
MySQL add period to name initials if no period exists
我有这样的数据集:
Juan Corona
Jane L Doe
John Q. Public
R S Fitzgerald
我需要清理它,所以它是:
Juan Corona
Jane L. Doe
John Q. Public
R. S. Fitzgerald
但是由于 MySQL 不支持正则表达式搜索和替换,所以我觉得自己有点不知所措。
最好在数据库中使用,但作为后备,我可以在 PREG_REPLACE 中使用,我知道可以在其中使用。
SELECT TRIM( -- remove sourrounding spaces
REPLACE( -- remove remaining double spaces
REPLACE(
REPLACE(
REPLACE(
-- ...
REPLACE(
REPLACE(
REPLACE(
REPLACE( CONCAT( ' ' , 'W A Mozart', ' '), ' ', ' '),
' A ', ' A.'),
' B ', ' B.'),
' C ', ' C.'),
-- ...
' X ', ' X.'),
' Y ', ' Y.'),
' Z ', ' Z.'),
' ', ' ') -- remove remaining double spaces
);
咳咳,这是一个务实的解决方案...另外,您可以轻松指定要将哪些字母视为缩写词。
周围 space 填充有助于在字符串的开头和结尾找到单个字母。
需要初始双 space 填充以使函数内部工作匹配两个字母之间的共享 spaces。
剩余的助手 space 被最外层的两个函数调用 TRIM 和 REPLACE 删除。
记住,匹配是case-sensitive。
我有这样的数据集:
Juan Corona
Jane L Doe
John Q. Public
R S Fitzgerald
我需要清理它,所以它是:
Juan Corona
Jane L. Doe
John Q. Public
R. S. Fitzgerald
但是由于 MySQL 不支持正则表达式搜索和替换,所以我觉得自己有点不知所措。
最好在数据库中使用,但作为后备,我可以在 PREG_REPLACE 中使用,我知道可以在其中使用。
SELECT TRIM( -- remove sourrounding spaces
REPLACE( -- remove remaining double spaces
REPLACE(
REPLACE(
REPLACE(
-- ...
REPLACE(
REPLACE(
REPLACE(
REPLACE( CONCAT( ' ' , 'W A Mozart', ' '), ' ', ' '),
' A ', ' A.'),
' B ', ' B.'),
' C ', ' C.'),
-- ...
' X ', ' X.'),
' Y ', ' Y.'),
' Z ', ' Z.'),
' ', ' ') -- remove remaining double spaces
);
咳咳,这是一个务实的解决方案...另外,您可以轻松指定要将哪些字母视为缩写词。
周围 space 填充有助于在字符串的开头和结尾找到单个字母。
需要初始双 space 填充以使函数内部工作匹配两个字母之间的共享 spaces。
剩余的助手 space 被最外层的两个函数调用 TRIM 和 REPLACE 删除。
记住,匹配是case-sensitive。