如何比较MySQL查询中的字符串

如何比较MySQL查询中的字符串,mysql,Mysql,我在编写mySql查询时遇到了一个问题 例如: 我有两个输入字段 Title=“现场直播” 作曲家=“麦当娜/米歇尔·杰克逊” 在我的数据库中,表包含以下记录 表名称:包含列标题和作曲家的歌曲 Title=“现场直播” 作曲家=“米歇尔·杰克逊/麦当娜” 我的问题是: select * from SONGS where title ='Live to Tell' and composer ='Madonna/Michel Jackson' 不返回结果。我在作曲者栏中互换了这个词 我的要求是

我在编写mySql查询时遇到了一个问题

例如:

我有两个输入字段

  • Title=“现场直播”
  • 作曲家=“麦当娜/米歇尔·杰克逊” 在我的数据库中,表包含以下记录

    表名称:包含列标题和作曲家的歌曲

  • Title=“现场直播”
  • 作曲家=“米歇尔·杰克逊/麦当娜” 我的问题是:

    select * from SONGS 
    where title ='Live to Tell' and 
    composer ='Madonna/Michel Jackson'
    
    不返回结果。我在作曲者栏中互换了这个词

    我的要求是,即使我们交换单词,也要让它起作用


    作曲家的内容以“/”分隔

    尝试使用php函数分解字符串
    Madonna/Michel Jackson
    。在查询中使用它之前

    $composer = explode('/', 'Madonna/Michel Jackson');
    
    这会将数组返回到
    $composer
    中,如下所示:

    array(
       [0] => 'Madonna',
       [1] => 'Michel Jackson'
    )
    
    要选择您可以使用的名称之一,
    $composer[0]或$composer[1]

    SELECT * FROM songs WHERE title ='Live to Tell' AND composer LIKE "%$composer[1]%";
    

    您可以在MySql上查看全文搜索功能:


    但这可能还不足以满足您的条件,您需要外部搜索引擎,如弹性搜索。

    大声读出您的查询。一个标题怎么可能同时是“直播”和“麦当娜/米歇尔·杰克逊”?这看起来像是一项数据规范化的工作(除其他外)。在单个字段中存储多个值使它们成为单个值。