我有一列文本用连字符分隔,例如 hello-welcome-to-tutorials
,我想拆分文本并选取每个单词的第一个字母。
所以单词是[你好,欢迎,到,教程]
第一个字母是hwtt
。我想为此在 MySQL 中提出一个选择查询。
这是我的查询:
select GROUP_CONCAT(LEFT(SUBSTRING_INDEX(mycolumn, '-', -1), 1) SEPARATOR '') from mytable
通过我只得到最后一个单词的第一个字母,即t
。
如何解决这个问题?
MySQL版本是8.0.33
最佳答案
您可以使用REGEXP_REPLACE
来做到这一点:
SELECT
REGEXP_REPLACE(CONCAT('-', mycolumn), '-([^-])[^-]*', '$1')
FROM mytable
这使用正则表达式匹配:
-
匹配连字符(引入单词)([^-])
匹配任何非连字符,并捕获(第一个字母)[^-]+
匹配零个或多个非连字符(单词的其余部分)
替换使用$1
来引用捕获的字符
示例:
+---------------------------------------------------------------------------------+
| REGEXP_REPLACE(CONCAT('-', 'hello-welcome-to-tutorials'), '-([^-])[^-]*', '$1') |
+---------------------------------------------------------------------------------+
| hwtt |
+---------------------------------------------------------------------------------+
关于mysql 获取每个单词的第一个字母,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/77137490/