我给了一张信用卡,我正在尝试使用卡的前几位确定它是什么类型的信用卡。 例如,如果卡以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 |
+-----+---------------+--------+
正则表达式适用于您的情况。你需要的正则表达式只是模式后跟一个通配符。
但是,通过简单匹配,您将获得多个结果,例如4026将匹配4和4026.为了解决这个问题,您选择最严格的一个作为匹配,最严格的一个将是具有最长长度的前缀。
SELECT card_name
FROM cards
WHERE [CREDIT CARD NUMBER] LIKE CONCAT(prefix, '%')
ORDER BY LENGTH(prefix) DESC
LIMIT 1;