【问题标题】:String operation in mysqlmysql中的字符串操作
【发布时间】:2020-11-30 09:13:51
【问题描述】:

我有一个带有 'MTRY,SRGTA N BM461 1197' 和 'NO,JOHN BN1407003 1295815512' 的字符串

我只需要获取名称和首字母(如果存在)。 比如 MTRY,SRGTA N 和 NO,JOHN。

如何通过查询来实现这一点。? 请有任何想法。

【问题讨论】:

  • 如果你使用 MySQL 8.x,你可以使用REGEXP_SUBSTR()

标签: mysql mysql-workbench mysql-python


【解决方案1】:

对于旧版本的 mysql,您可能需要执行一些操作,例如匹配具有首字母而不是单独提取的那些,然后组合结果,例如:

SELECT SUBSTRING_INDEX(myString," ",2) 
FROM myTable
WHERE myString regexp '[A-Z]*,[A-Z]* [A-Z] ' 
UNION
SELECT SUBSTRING_INDEX(myString," ",1) 
FROM myTable
WHERE myString not regexp '[A-Z]*,[A-Z]* [A-Z] ';

正则表达式匹配所有大写字母 A-Z 任意次数,后跟逗号,再后跟任意数字 A-Z,后跟空格、单个大写字母和空格。这与初始情况匹配,因此对于那些我们将字符串添加到第二个空格,对于那些不匹配(没有初始)的情况,我们将字符串添加到第一个空格。

你可以在这里看到这个作品:http://sqlfiddle.com/#!9/88cb52/1/0

最新的 mysql 有 REGEXP_SUBSTR,但它不支持前瞻,所以不幸的是我仍然无法在我能想到的单个查询中做到这一点。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-10-01
    • 1970-01-01
    • 2020-03-14
    • 2011-05-12
    • 1970-01-01
    相关资源
    最近更新 更多