如何在MySQL表中搜索前缀?

问题描述 投票:0回答:1

我给了一张信用卡,我正在尝试使用卡的前几位确定它是什么类型的信用卡。 例如,如果卡以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个回答
1
投票

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

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

SELECT card_name 
FROM cards 
WHERE [CREDIT CARD NUMBER] LIKE CONCAT(prefix, '%')
ORDER BY LENGTH(prefix) DESC 
LIMIT 1;
© www.soinside.com 2019 - 2024. All rights reserved.