Mysql 对每个包含关键字的单词进行类似SQL的查询
例如: 我有一个词来搜索数据。这个词是“阿雅” 这是我的问题:Mysql 对每个包含关键字的单词进行类似SQL的查询,mysql,Mysql,例如: 我有一个词来搜索数据。这个词是“阿雅” 这是我的问题: select nama_product from product where nama_product like %a% 它很好用。但是它显示了我不想被展示的记录。 结果是: 阿亚姆·巴卡尔 大靖阿雅 巴亚姆希尧 道恩巴亚姆 第一个和第二个结果是可以的。但是第三个也是最后一个,我不想被展示出来 因为我想展示的是“阿亚姆”而不是“阿亚姆” 我该怎么处理?我不知道它是不是复制品。因为我已经搜索了它,但没有找到。当你在它之前和之后插
select nama_product from product where nama_product like %a%
它很好用。但是它显示了我不想被展示的记录。
结果是:
- 阿亚姆·巴卡尔
- 大靖阿雅
- 巴亚姆希尧
- 道恩巴亚姆
我该怎么处理?我不知道它是不是复制品。因为我已经搜索了它,但没有找到。当你在它之前和之后插入“%”时,表示关键字之前(之后)的所有字符,所以只需更改你想要的方式 例如,仅以“ayam”开头的关键字: 从nama_产品中选择nama_产品,如“ayam%” 另一个例子是以“ayam”结尾的关键字: 从nama_产品(如“%ayam”)所在的产品中选择nama_产品 看这里,我想你的答案是:
不幸的是,这是SQL的一个限制。一些SQL数据库具有高级文本搜索功能,例如正则表达式,它允许非常特定的文本结果 对于您的情况,您可能需要执行多个类似条件。例如:
select nama_product
from product
where
nama_product like 'ayam %'
or nama_product like '% ayam %'
or nama_product like '% ayam'
or nama_product = 'ayam'
请注意,如果文本字段非常大或表很大,则依赖LIKE运算符的查询可能会变得非常慢。LIKE不能很好地扩展大型数据集。如果这是一个您认为将来会变得非常大的数据集,最好以一种不需要LIKE运算符的方式设计它。如果您需要搜索没有任何前缀和sufix字符的单词“ayam”,最好使用正则表达式。
e、 g.,
SELECT namma_product FROM product WHERE namma_product REGEXP 'ayam'
试试这个。这将起作用您可以使用它仅匹配整个单词:
select nama_product
from product
where nama_product regexp '(^| )ayam( |$)';
表示单词必须是字符串的开头,或者前面必须有空格(^ |)
是我们要匹配的词ayam
表示单词后面必须有空格,或者必须是字符串的结尾(|$)