【问题标题】:MySQL like another fieldMySQL 喜欢另一个领域
【发布时间】:2011-06-20 15:41:52
【问题描述】:

我有一个包含两个字符串列的表:Url 和 ModelId。我需要返回 Url 包含 ModelId 的记录,如下所示:

SELECT Id, Url, ModelId WHERE Url like "%ModelId%"

【问题讨论】:

标签: mysql sql-like


【解决方案1】:
SELECT Id, Url, ModelId 
WHERE Url LIKE CONCAT('%', ModelId, '%')

【讨论】:

  • 从技术上讲,如果字段中有 %,您可能需要转义:LIKE CONCAT('%',REPLACE(field,'%','\%'),'%')
【解决方案2】:

你不能只连接字符串,你还必须从 % 和 _ 中转义字段:

SELECT Id, Url, ModelId 
WHERE Url LIKE CONCAT('%', REPLACE(REPLACE(ModelId,'%','\%'),'_','\_'), '%'), '%')

【讨论】:

  • 好点。问题:您还应该转义“\”字符吗? REPLACE(REPLACE(REPLACE(ModelId,'\\','\\\\'),'%','\%'),'_','\_')
【解决方案3】:

这里是查询:

SELECT Id, Url, ModelId WHERE Url LIKE CONCAT('%', ModelId, '%')

【讨论】:

    【解决方案4】:
    SELECT Id, Url, ModelId from <table> WHERE Url like '%' + ModelId + '%'
    

    【讨论】:

    • 您的查询没有意义。
    • + 何时开始在 MySQL 中用于字符串连接?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-05-09
    • 1970-01-01
    • 1970-01-01
    • 2019-07-03
    • 2014-03-30
    • 2012-03-17
    • 2010-11-10
    相关资源
    最近更新 更多