如何在 MySQL 表中搜索前缀?
Posted
技术标签:
【中文标题】如何在 MySQL 表中搜索前缀?【英文标题】:How do I search a prefix in a MySQL table? 【发布时间】:2017-12-20 03:07:29 【问题描述】:我得到了一张信用卡,我正在尝试使用信用卡的前几位数字来确定它是什么类型的信用卡。 例如,如果卡以 4833 开头,那么我的查询应该返回 Visa。 如果它以 4026 开头,那么它将返回 Visa Electron。 如何编写查询来执行此操作?
我的桌名是卡片
+-----+---------------+--------+
| id | card_name | prefix |
+-----+---------------+--------+
| 915 | Visa | 4 |
| 916 | Visa Electron | 4026 |
| 917 | Visa Electron | 417500 |
| 918 | Visa Electron | 4405 |
| 919 | Visa Electron | 4508 |
| 920 | Visa Electron | 4844 |
| 921 | Visa Electron | 4913 |
| 922 | Visa Electron | 4917 |
+-----+---------------+--------+
【问题讨论】:
dev.mysql.com/doc/refman/5.7/en/case.html 【参考方案1】:正则表达式适用于您的情况。您需要的正则表达式只是后跟通配符的模式。
但是,通过简单匹配,您将获得多个结果,例如 4026 将匹配 4 和 4026。为了解决此问题,您选择最严格的一个作为匹配项,而最严格的一个将是前缀最长的长度。
SELECT card_name
FROM cards
WHERE [CREDIT CARD NUMBER] LIKE CONCAT(prefix, '%')
ORDER BY LENGTH(prefix) DESC
LIMIT 1;
【讨论】:
以上是关于如何在 MySQL 表中搜索前缀?的主要内容,如果未能解决你的问题,请参考以下文章