我想查找表中包含特定列数据的所有行。
假设我有一张名字表。
+----------+------------------+
| id | name |
+----------+------------------+
| 1 | John Do |
+----------+------------------+
| 2 | Douglas Rutledge |
+----------+------------------+
| 3 | Herman Kelly |
+----------+------------------+
对于给定的字符串:“我和Douglas Rutledge参加了一个聚会” 我想得到结果:
+----------+------------------+
| id | name |
+----------+------------------+
| 2 | Douglas Rutledge |
+----------+------------------+
或者是字符串:“我刚见过John Do和Herman Kelly” 我想得到结果:
+----------+------------------+
| id | name |
+----------+------------------+
| 1 | John Do |
+----------+------------------+
| 3 | Herman Kelly |
+----------+------------------+
我想象一个看起来像这样的查询:SELECT * FROM my_table WHERE my_table.name包含在“my_string”中
答案 0 :(得分:0)
您可以使用例如Do
select * from my_table
where name like '%Do%';
反向你可以尝试使用
select * from my_table
where "I was in a party with Douglas Rutledge" like concat('%,name, '%');
答案 1 :(得分:0)
您可以使用全文搜索来实现此目的。
要使用全文搜索,您必须创建列的FULLTEXT
索引。为此,您可以使用此查询。
ALTER TABLE <table_name> ADD FULLTEXT <index_name>(<column_names>);
创建全文索引后,您可以查询类似的内容。
select
id, name
from
<table_name>
where
match(<column_name>) against ('<string>')
代表:&#34;我刚见过John Do和Herman Kelly&#34;。结果将是:
+----------+------------------+
| id | name |
+----------+------------------+
| 1 | John Do |
+----------+------------------+
| 3 | Herman Kelly |
+----------+------------------+
了解更多信息:https://dev.mysql.com/doc/refman/5.7/en/fulltext-search.html#function_match
MySQL支持全文索引和搜索:
MySQL中的全文索引是FULLTEXT类型的索引。
全文索引只能用于InnoDB或MyISAM表,并且只能为CHAR,VARCHAR或TEXT列创建。
对于大型数据集,将数据加载到没有FULLTEXT索引的表中,然后在此之后创建索引要快得多,而不是将数据加载到具有现有FULLTEXT索引的表中。
希望这会有所帮助