2017-12-20 5 views
0

신용 카드를 발급 받았으며 카드의 첫 자릿수를 사용하는 신용 ​​카드 유형을 확인하려고합니다.
예를 들어, 카드가 4833으로 시작하면 내 쿼리에서 Visa가 반환됩니다.
4026으로 시작하면 Visa Electron이 반환됩니다.

어떻게 쿼리를 작성합니까?
MySQL 테이블에서 접두사를 검색하려면 어떻게해야합니까?

내 테이블 이름은 카드

+-----+---------------+--------+ 
| 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 | 
+-----+---------------+--------+ 
+0

https://dev.mysql.com/doc/refman/5.7/en/case.html – ceejayoz

답변

1

인 정규식 것입니다 귀하의 경우에 작동합니다. 당신이 필요로하는 정규 표현식은 와일드 카드 문자 다음에 오는 패턴 일뿐입니다.

그러나 간단한 일치를 사용하면 여러 결과가 표시됩니다. 예를 들어 4026은 4와 4026 모두와 일치합니다.이 문제를 해결하려면 가장 제한적인 것을 일치로 선택하고 가장 제한적인 것을 가장 접두사로 사용합니다 가장 긴 길이.

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

awesome! 그랬지, 정말 고마워! – altoids

관련 문제