Как мне найти префикс в таблице MySQL?

0

Мне дается кредитная карта, и я пытаюсь определить, какой тип кредитной карты она использует с помощью первых двух цифр карточки.
Например, если карта начинается с 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 |
+-----+---------------+--------+
Теги:
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;
  • 0
    классно! что сделал это, спасибо большое!

Ещё вопросы

Сообщество Overcoder
Наверх
Меню