【问题标题】:Find Where string contains keywords查找字符串包含关键字的位置
【发布时间】:2016-03-01 20:49:05
【问题描述】:

当新帖子标题包含这些关键字时,用户输入了一些他想要得到通知的关键字。这是我目前正在尝试的:

LOCATE( LOWER( REPLACE(  `app_notif_keywords` ,  ' ',  ',' ) ) , LOWER( REPLACE(  'Visiska tamsa | Pitch Black (2000)',  ' ',  ',' ) ) ) !=0

这是一个精简版:

LOCATE('the,gift,pitch,black', 'visiska,tamsa,|,pitch,black,(2000)')

但是,我没有得到任何回报。我可以用什么来代替它?

【问题讨论】:

  • 全文索引。这将是解决此类问题的合适技术。
  • 我想我只是使用了错误的 sql 函数,是否有任何函数可以检查两个数组是否包含相同的值?例如。 1,2,3 和 4,5,6 的值不同,但 1,2,3 和 5,3,4 有。
  • 您使用的是哪个数据库? mysql、oracle、sql server、postgres等?
  • @Bohemian 我正在使用 mysql

标签: mysql arrays string keyword contain


【解决方案1】:

要匹配任何范围的 csv 值,请使用 regexp,如下所示:

select * from mytable
where lower(concat(',', app_notif_keywords, ','))
  regexp lower(concat(',(', replace('Visiska tamsa Pitch Black', ' ', '|'), '),'))

SQLFiddle

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-08-22
    • 2023-03-14
    • 1970-01-01
    • 1970-01-01
    • 2015-11-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多