Mysql:我需要搜索记录搜索文本与第三个字匹配的位置

时间:2016-05-21 11:09:18

标签: mysql

我需要搜索记录,其中搜索的文本与数据库记录中的第三个字匹配。

示例:假设我在说明字段中有三条记录

This is alex from Usa
This is Michael from India
This is xyz  from Canada

我希望我搜索的内容只能用第三个单词检查。怎么可能在mysql中?如何写这样的查询?

2 个答案:

答案 0 :(得分:1)

您可以使用substring_index

select * from my_table 
where  SUBSTRING_INDEX(SUBSTRING_INDEX(ip,' ',3),' ',-1) =  'Your_text';

或者如果需要,请使用

select * from my_table 
where  SUBSTRING_INDEX(SUBSTRING_INDEX(ip,' ',3),' ',-1) like  '%Your_text%';

答案 1 :(得分:1)

如果您可以使用 REGEXP_REPLACE ,则可以使用 REGEXP_REPLACE

SELECT REGEXP_REPLACE('This is alex from Usa. and mor Text','^\\w+ \\w+ \(\\w+\).*$','\\1');

<强>示例

MariaDB [bb]> SELECT REGEXP_REPLACE('This is alex from Usa. and mor Text','^\\w+ \\w+ \(\\w+\).*$','\\1');
+--------------------------------------------------------------------------------------+
| REGEXP_REPLACE('This is alex from Usa. and more Text','^\\w+ \\w+ \(\\w+\).*$','\\1') |
+--------------------------------------------------------------------------------------+
| alex                                                                                 |
+--------------------------------------------------------------------------------------+
1 row in set (0.00 sec)

MariaDB [bb]>

请参阅:https://mariadb.com/kb/en/mariadb/pcre/

您还可以在(MariaDB)表中创建虚拟persitent字段,该字段仅自动保存3个字。所以你可以在这个字段上使用索引

像这样创建表

CREATE TABLE table1 (
     a INT NOT NULL,
     yourtext VARCHAR(32),
     c INT AS (a mod 10) VIRTUAL,
     word VARCHAR(20) AS 
      (REGEXP_REPLACE(yourtext,'^\\w+ \\w+ \(\\w+\).*$','\\1')) PERSISTENT);