查询输入的子字符串是字段的一部分

时间:2013-03-15 23:48:27

标签: mysql substring

我正在尝试提出一个查询,如果输入是id或者输入包含与输入开头匹配的最长别名,则返回一行。这是一个示例数据表和结果应该是什么。

表格

id+alias
1 | dept
2 | dept/reception
3 | dept/support
4 | dept/support/server
5 | dept/support/networking
6 | 
7 | news
8 | purple

查找

input => result
5 => 5
dept => 1
dept/add => 1
purple => 8
dept/support/moo => 3
dept/reception/bldg5/floor7 => 2

如果我在别名中寻找输入就很容易了,但我不知道如何找到输入的别名并且是最长的别名。

1 个答案:

答案 0 :(得分:1)

SELECT * FROM `tbl` 
WHERE `id` = 'INPUT' 
  OR `alias` = 'INPUT'
  OR 'INPUT' LIKE CONCAT(`alias`,'%')
  ORDER BY `id` = 'INPUT' DESC, 
    `alias` = 'INPUT' DESC, 
    (LENGTH(`alias`) - LENGTH(REPLACE(`alias`, '/', ''))) DESC
LIMIT 0,1