【问题标题】:How do I search a prefix in a MySQL table?如何在 MySQL 表中搜索前缀?
【发布时间】: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 |
+-----+---------------+--------+

【问题讨论】:

标签: mysql select prefix


【解决方案1】:

正则表达式适用于您的情况。您需要的正则表达式只是后跟通配符的模式。

但是,通过简单匹配,您将获得多个结果,例如 4026 将匹配 4 和 4026。为了解决此问题,您选择最严格的一个作为匹配项,而最严格的一个将是前缀最长的长度。

SELECT card_name 
FROM cards 
WHERE [CREDIT CARD NUMBER] LIKE CONCAT(prefix, '%')
ORDER BY LENGTH(prefix) DESC 
LIMIT 1;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-09
    • 1970-01-01
    • 2018-12-02
    • 1970-01-01
    • 2017-08-06
    • 1970-01-01
    相关资源
    最近更新 更多