作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我收到了一张信用卡,我正在尝试使用该卡的前几位数字来确定该信用卡的类型。
例如,如果卡以 4833 开头,那么我的查询应返回 Visa。
如果以 4026 开头,那么它将返回 Visa Electron。
如何编写查询来执行此操作?
我的 table 名称是卡片
+-----+---------------+--------+
| 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;
关于mysql - 如何在 MySQL 表中搜索前缀?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47898227/
我是一名优秀的程序员,十分优秀!