Mysql 查找具有最长字段值的行作为文本的开头

标签 mysql sql mariadb

我在 mysql 表中有类似的东西。

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

通常您会搜索列中的文本,我只想相反,我想要一个查询来搜索文本中的所有列。不知道可不可以。

if text is "a-b-f" It must return query with ID 3 ("a-b")

if text is "a-c" It must return query with ID 1 ("a")

if text is "b-a" It must return query with ID 2 ("b")

if text is "b-b" It must return query with ID 2 ("b")

if text is "a-b-c-d-e-f" It must return query with ID 5 ("a-b-c")

if text is "c-a-a" It must return an empty query

感谢您的帮助。

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

最佳答案

可以使用类似

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

关于Mysql 查找具有最长字段值的行作为文本的开头,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38663302/

相关文章:

MySQL:将表复制到另一个带有额外列的表

php - 如何根据值扩展 implode() 以获取单独的字符串

sql - 在 postgreSQL 更新触发审核时,原始表更新正常,但审核表中出现多行。

mysql - MariaDB 中不存在 REGEXP_REPLACE 函数

mysql - datagrip 和 phpmyadmin 上不显示数据库关系线

java - 使用@Formula从出生日期计算年龄

MYSQL:存储事件日志的最佳方法

php - Register.php不插入sql查询

mysql - 从子查询/连接同一个表更新 MySQL 表

sql - 使用 Access SQL 查询删除小数位