數據庫截取字符串SUBSTR函數的使用


背景

今天中午做需求的時候,有類似於根據銀行卡卡號的前幾位判斷出是哪個銀行的情況,每個銀行需要截取的位數都不一樣,這時我就想到了SUBSTR

數據庫截取字符串SUBSTR函數的使用

假設有一個表的結構如下(表名tlk_bnkld_card)

寫sql語句的時候就能看到有很多的substr函數的提示,各人根據需求選用。

其中的 str表示被截取的字段

    pos表示開始的下標

    len表示截取的長度

 

 

SUBSTR(str FROM pos FOR len)的使用:

1 SELECT SUBSTR(idtf_value FROM 1 FOR 2) idtfValue 2 FROM tlk_bnkld_card 3 WHERE 1=1

 截取字段idtf_value ,從第一位開始截取,截取兩位

執行結果

SUBSTR(str FROM pos) 的使用

1 SELECT SUBSTR(idtf_value  FROM 2) idtfValue
2 FROM tlk_bnkld_card
3 WHERE 1=1

截取字段idtf_value ,從第二位截取到結束

執行結果:

  

SUBSTRING與SUBSTR區別不大,輸出結果一致;

1 SUBSTR(str,pos) 2 SUBSTR(str,pos,len) 3 SUBSTRING(str FROM pos FOR len) 4 SUBSTRING(str FROM pos) 5 SUBSTRING(str,pos) 6 SUBSTRING(str,pos,len)

這幾個函數的用法和上面的兩種類似,參見上述;

SUBSTRING_INDEX(str,delim,count)函數的用法

用法規則:

SUBSTRING_INDEX(“待截取有用部分的字符串”,“截取數據依據的字符”,截取字符的位置N)

例如:

1 SELECT SUBSTRING_INDEX(idtf_value,'4',2) idtfValue 2 FROM tlk_bnkld_card 3 WHERE idtf_value='392454'

將字符串用"4"分割開,截取從開始到第二個“4”之前的字符串輸出

執行結果

 

 注意:

  假如有負號像這樣

1 SELECT SUBSTRING_INDEX(idtf_value,'4',-2) idtfValue 2 FROM tlk_bnkld_card 3 WHERE idtf_value='392454'

截取時就說從后往前截取,截取到從后面數的第二個之前

執行結果

 

 

歡迎大家關注公眾號,不定時干貨,只做有價值的輸出

作者:Dawnzhang 
出處:https://www.cnblogs.com/clwydjgs/p/9324255.html
版權:本文版權歸作者
轉載:歡迎轉載,但未經作者同意,必須保留此段聲明;必須在文章中給出原文連接;否則必究法律責任


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM