我需要搜索记录,其中搜索的文本与数据库记录中的第三个字匹配。
示例:假设我在说明字段中有三条记录
This is alex from Usa
This is Michael from India
This is xyz from Canada
我希望我搜索的内容只能用第三个单词检查。怎么可能在mysql中?如何写这样的查询?
答案 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);