溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

卡bin查詢sql分享

發(fā)布時(shí)間:2020-08-23 03:44:39 來源:網(wǎng)絡(luò) 閱讀:5126 作者:Ye_Kwii 欄目:MySQL數(shù)據(jù)庫

卡bin:卡號的前6位數(shù)字代表發(fā)卡行標(biāo)識代碼,也叫BIN號,不同的BIN號代表了不同的銀行卡組織和卡片級別。


最近更新了系統(tǒng)的卡bin表數(shù)據(jù)(bank_card_bin),發(fā)現(xiàn)卡bin長度并不是前述的6位數(shù)字,卡bin長度為8位(有些6位、有些7位,非定長),如下表,


支行行名稱卡名卡類型卡bin卡bin長度長度組織碼
烏拉特中旗蒙銀村鎮(zhèn)銀行烏拉特中旗蒙銀村鎮(zhèn)銀行蒙銀借記卡借記卡6213460781915142075
磴口蒙銀村鎮(zhèn)銀行磴口蒙銀村鎮(zhèn)銀行蒙銀借記卡借記卡6213462681915142073
鄂托克前旗蒙銀村鎮(zhèn)銀行鄂托克前旗蒙銀村鎮(zhèn)銀行蒙銀借記卡借記卡6213462481915142054
鄂爾多斯市鐵西蒙銀村鎮(zhèn)銀行鄂爾多斯市鐵西蒙銀村鎮(zhèn)銀行蒙銀借記卡借記卡6213461181915142051
四子王蒙銀村鎮(zhèn)銀行四子王蒙銀村鎮(zhèn)銀行蒙銀借記卡借記卡6213461381915142046


那么如何根據(jù)銀行卡號查詢具體的卡信息呢?

最開始的想法是截圖卡號前6位,并限制卡長度進(jìn)行查詢,若返回結(jié)果不是只有一條則繼續(xù)截取前7位進(jìn)行查詢,直到只有一條返回結(jié)果。若有2條及以上結(jié)果時(shí),繼續(xù)查詢卻有0條記錄,則認(rèn)為未收錄該卡bin數(shù)據(jù)。即遞歸查詢。假設(shè)卡號為6213462465616156,參考sql如下

select * from bank_card_bin
where  '6213462465616156'  like '621346%' and  長度 = '19'


但是,這太麻煩了,怎么可能呢?在同事溝通確認(rèn),可以做些變更,如下

select * from bank_card_bin
where '6213462465616156' like concat(卡bin,'%') and  長度 = '19'

巧妙地將前一個(gè)sql拆成了兩段,且卡bin不是由用戶自己判斷截取的,是做匹配。

同時(shí),此sql利用了“卡bin是唯一”的特性,不存在包含關(guān)系,即不存在以下的記錄,

***銀行**銀行蒙銀借記卡借記卡6213466191514204


向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI