如何在 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 表中搜索前缀?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Java 在 MySQL 表中仅搜索一条特定记录

如何使用 PHP 和 Mysql 将搜索框放入数据库表中

按前缀在 DB 表中搜索字符串

如何在 terraform 路由表中引用 AWS 本地前缀列表?

批量mysql修改表前缀

如何从表中选择哪个名称存储在另一个表中带有“0”前缀的列中