当前位置: 首页 > 面试题库 >

Mysql LIKE子句和字段中的单独单词

钱毅
2023-03-14
问题内容

我目前正在使用类似下面的mysql语句来搜索帖子标题。

select * from table where title like %search_term%

但是问题是,如果标题是:Acme launches 5 pound burger并且用户搜索Acme,它将返回结果。但是,如果用户搜索Acme burgerAcme 5 pound,则不会返回任何内容。

当用户搜索多个单词时,是否有办法使它返回结果?就是LIKE在这里使用了正确的事情还是有别的东西可以用吗?


问题答案:

您可以使用REGEXP来匹配搜索字符串中的任何单词:

select *
from tbl
where
  title REGEXP CONCAT('[[:<:]](', REPLACE('Acme burger', ' ', '|'), ')[[:>:]]')

请注意,这将不是很有效。在这里看小提琴。

如果需要匹配字符串中的每个单词,则可以使用如下查询:

select *
from tbl
where
  title REGEXP CONCAT('[[:<:]]', REPLACE('Acme burger', ' ', '[[:>:]].*[[:<:]]'), '[[:>:]]')

在这里摆弄。但是单词必须以正确的顺序排列(例如,“ Acme
burger”将匹配,“ burger Acme”将不匹配)。有一个REGEXP可以按任何顺序匹配每个单词,但是MySql不支持它,除非您安装支持Perl
regexp的UDF。



 类似资料:
  • 我一直在试图弄清楚如何计算句子每个单词中的元音和字符。例如 在句子 < code>hello : 5个字符,2个元音 <代码>有:5个字符,2个元音 。我见过完整句子做同样事情的代码。但不是一个字一个字地。 下面是我一直在做的编码 输入将全部。我很难弄清楚这一点。 在运行代码时,我没有得到元音计数。我能把句子分开。但元音计数没有发生。

  • 我能够检查我输入的单词是否是回文。但是我怎么让它检查整个句子。比如:一个人,一个计划,一只猫,一只火腿,一头牦牛,一个山药,一顶帽子,一条运河——巴拿马! 这是我的回文: 输出: 输入一个句子:一个男人,一个计划,一只猫,一个火腿,一头牦牛,一个山药,一顶帽子,一条运河! 这句话不是回文 //这不也是回文吗?这就是我想说的。我想输入一整句话。 然而,如果我只做一个词: 输入一个句子:abccba

  • 对于我的程序,我想颠倒一行文本中的字母。但是我不想颠倒句子中单词的顺序。例如,当我输入:“这是一个字符串” 我得到了一个siht 但我想要的是

  • 我正在尝试编写一个java程序,它可以反转句子中的每个单词。例如,如果句子是“Hello World.Hello Java”,输出应该是“olleH dlroW.olleH avaJ”。我可以反转,但我得到的输出是“olleH.dlroW olleH.avaJ”,即使是圆点也会反转,这是不应该发生的。谁能帮我修一下吗? 谢谢你!! 我试过这样的方法: 预期输出:olleH dlro. olleH

  • 我有一个带有签名字节的数组和一个带有ocsp字节的数组,用于将ltv信息添加到我的pdf中。该签名是时间戳签名。现在,我尝试将这些信息添加到一个pdf文件中,该文件可用于 ... 好的,这样行。但在签名中,我必须设置标志认证级别1(不允许更改),我的应用程序将无法工作。因为添加LTV后,我更改了文档。我尝试创建自己的DSS字典并将其添加到文档中,但失败了。有谁能帮忙吗?提前谢谢

  • 我在大学上Java入门课程。我的作业是写一个程序来显示一个句子中1个字母单词的数量,一个句子中2个字母单词的数量...等等。句子是用户输入的。我应该使用一个循环,但不允许使用数组。 然而,现在只是开始,我只是想找出句子第一个单词的字母数。我得到的结果要么是字母数不正确,要么是字符串索引超出范围。 例如,当我输入“这是一个句子”时,它会给我“字符串索引超出范围:4”对此的任何帮助都将不胜感激。