【问题标题】:Mysql find row with longest field value as beginning of a textMysql查找具有最长字段值的行作为文本的开头
【发布时间】:2016-07-29 16:16:04
【问题描述】:

我在一个 mysql 表中有这样的东西。

ID  Text
1   a
2   b
3   a-b
4   b-a
5   a-b-c
6   a-b-d

通常你在一个列中搜索一个文本,我只是想要相反,我想要一个查询来搜索一个文本中的所有列。不知道有没有可能。

如果文本是“a-b-f”,则必须返回 ID 为 3(“a-b”)的查询

如果文本是“a-c”,它必须返回 ID 为 1(“a”)的查询

如果文本是“b-a”,则必须返回 ID 为 2(“b”)的查询

如果文本是“b-b”,它必须返回 ID 为 2(“b”)的查询

如果文本是“a-b-c-d-e-f”,则必须返回 ID 为 5(“a-b-c”)的查询

如果文本是“c-a-a”它必须返回一个empty查询

感谢您的帮助。

PD:我一直在寻找类似的东西,但我发现的所有方法都是在列值内搜索文本,这与我所说的相反。

【问题讨论】:

    标签: mysql sql mariadb


    【解决方案1】:

    可以像这样使用

     select ID from my_table  
     where  'your_text_seach'   like   concat ( text, '%')
     order by length(text) desc
     limit 1
    

    【讨论】:

    • 例如,当文本为“a-b-c”时返回多行。它返回 ID 1、3 和 5,它必须返回最长的字符串,可能只是按字符串大小排序并限制为1
    • 我已经更新了答案..让我知道
    • 有一个小的tipo错误(长度),但它正在工作,谢谢
    猜你喜欢
    • 2015-06-24
    • 1970-01-01
    • 2020-08-11
    • 2019-03-02
    • 2011-03-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多