在MySql中使用正则表达式

在MySql中使用正则表达式,mysql,regex,Mysql,Regex,我需要编写一个sql查询,从具有以下列的表中检索和匹配记录 first_name, second_name, attribute 目标是编写一个查询,它只匹配列属性为以下形式的记录 <one or more arbitrary character>%<first name>_<second name>%<zero or more arbitrary characters> 如您所见,名字和姓氏中字母的大小写也匹配。 这是我的尝试 SELECT

我需要编写一个sql查询,从具有以下列的表中检索和匹配记录

first_name, second_name, attribute
目标是编写一个查询,它只匹配列
属性
为以下形式的记录

<one or more arbitrary character>%<first name>_<second name>%<zero or more arbitrary characters>
如您所见,名字和姓氏中字母的大小写也匹配。 这是我的尝试

SELECT first_name,
       second_name,
       attribute
FROM table
WHERE attribute REGEXP  '^.+ CONCAT('%',binary(first_name),'_',binary(last_name),'%').*'
ORDER BY attribute; 
由于大小写匹配是一项要求,我觉得
binary()
函数会有所帮助。但我得到以下语法错误

ERROR 1064 (42000) at line 35: You have an error in your SQL syntax; check the manual that corresponds to 
  your MySQL server version for the right syntax to use near '_',binary(last_name),'%').*'
    ORDER BY attribute; 
END' at line 10

看手册帮不了什么忙。我能得到一些反馈吗?这里可能出了什么问题?谢谢你必须像

第一个名称|第二个名称|属性 :--------- | :---------- | :----------------------------------------------------------------- 维森塔|克拉维茨| 0%维森塔|克拉维茨% Shayne|Dahlquist|0R0V331K8Q7ypBi4Az3B6Nm0jCqUk%Shayne|Dahlquist%46E3O0u7t7 Mikel | Kravitz | PBX86iw1Ied87Z9OarE6sdSLdt%Mikel | Kravitz%W73XOY9YAOGI060R2X12MD
dbfiddle

感谢您的帮助。也感谢您共享dbfiddle链接。为什么要复制属性中的名称?请在存储到表中之前解析“属性”。这可能会导致多行进入表中,但SQL会简单得多。
ERROR 1064 (42000) at line 35: You have an error in your SQL syntax; check the manual that corresponds to 
  your MySQL server version for the right syntax to use near '_',binary(last_name),'%').*'
    ORDER BY attribute; 
END' at line 10
CREATE TABLE Table1
    (`first_name` varchar(7), `second_name` varchar(9), `attribute` varchar(66))
;
    
INSERT INTO Table1
    (`first_name`, `second_name`, `attribute`)
VALUES
    ('Vicenta', 'Kravitz', '0%Vicenta_Kravitz%'),
    ('Shayne', 'Dahlquist', '0R0V331K8Q7ypBi4Az3B6Nm0jCqUk%Shayne_Dahlquist%46E3O0u7t7'),
    ('Mikel', 'Kravitz', 'PBX86iw1Ied87Z9OarE6sdSLdt%Mikel_Kravitz%W73XOY9YaOgi060r2x12D2EmD')
;
    SELECT first_name,
       second_name,
       attribute
FROM Table1
WHERE attribute REGEXP  CONCAT('^.+%',binary(first_name),'_',binary(second_name),'%.*')
ORDER BY attribute; 
first_name | second_name | attribute :--------- | :---------- | :----------------------------------------------------------------- Vicenta | Kravitz | 0%Vicenta_Kravitz% Shayne | Dahlquist | 0R0V331K8Q7ypBi4Az3B6Nm0jCqUk%Shayne_Dahlquist%46E3O0u7t7 Mikel | Kravitz | PBX86iw1Ied87Z9OarE6sdSLdt%Mikel_Kravitz%W73XOY9YaOgi060r2x12D2EmD