mysql - 匹配最佳正则表达式

标签 mysql sql regex match

在下表中,我如何匹配“FG2-4G4T5”,以便第一个返回的行是最佳匹配(即“FG2-4G”) ?

part_match
^FG2|^FF2|^FF3-S|^FF4-GR
^FG2-4G
^FG2
 FG2-RGST

以下查询在这种情况下不起作用,因为“^FG2|^FF2|^FF3-S|^FF4-GR”的长度更长:

SELECT * FROM parts WHERE 'FG2-4G4T5' REGEXP part_match ORDER BY length(part_match) DEC

任何帮助将不胜感激。提前致谢。

最佳答案

有时 K.I.S.S.解决方案是最好的。保留另一列列出与模式匹配的文本的实际长度?

part_match           part_match_length
======================================
^FG2|^FF2|^FF3|^FF4  3
^FG2-4G              6
^FG2                 3

因此...

SELECT * FROM parts
WHERE 'FG2-4G4T5' REGEXP part_match
ORDER BY part_match_length DEC

从技术上讲,第二列甚至不一定是长度 - 只是某种表示给定模式提供的匹配程度的指示。

关于mysql - 匹配最佳正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5237328/

相关文章:

MySQL 表示 : Documentation #2054 - The server requested authentication method unknown to the client

mysql - 逐行合并两个子查询

javascript - 包括特殊字符 (!,@,#,&) 不包括其他特殊字符

MySQL - 修剪 VARCHAR 值?

mysql - 如何从服务器上的 "java.sql.ResultSet"获取客户端上的数据源文件?

php - 调用未定义函数 mysql_connect()

php - SQLSTATE[23000] : Integrity constraint violation: 1052 using join with laravel

sql - 如何在 Postgresql 中列值等于时从另一个表插入数据?

c# - 正则表达式错误 : expression took longer than ms to execute

python - 为什么 Django 找不到这些 url,尽管正则表达式匹配?