MariaDB SELECT WHERE REGEXP

时间:2017-09-28 14:05:47

标签: regex search mariadb

我遇到了一个问题,我收到了格式错误的EG fullName列的数据集,而且没有我希望搜索任何名称以给定字母开头的名称细分EG 'J'

所以这是我的陈述,但我只是抱怨有意外的REGEXP

SELECT * FROM `Officers` WHERE `fullName` REGEXP '.*\sJ.*';

有没有办法在MariaDB中执行此操作,遗憾的是,这些名称不是固定字数,有些只有2个名字,其他有6个名字,所以有4个中间名。

2 个答案:

答案 0 :(得分:3)

您可以使用

REGEXP '\\bJ'
        ^^^

此处,\b是一个字边界,仅当J前面没有字母,数字或_时才会强制匹配。

\加倍,因为正则表达式引擎需要文字\,并且需要两个反斜杠。 \b在这里工作,而不是[[:<:]],因为MariaDB使用PCRE正则表达式引擎。

答案 1 :(得分:1)

尝试使用以下内容:

SELECT * FROM `Officers` WHERE `fullName` REGEXP '[[:<:]]J'

请参阅文档:https://dev.mysql.com/doc/refman/5.7/en/regexp.html