MySQL 替換和截取指定位置字符串


1.情景展示

  返回服務器的身份證號需要進行加密:只保留前4位和后3位,中間使用*代替,如何實現? 

2.場景分析

  需要用到的函數有:IFNULL(),IF(),LENGTH(),REPLACE(),SUBSTR(),這里重點介紹一下REPLACE()和SUBSTR()。

  REPLACE(str,from_str,to_str)

  介紹:將字符串中部分字符串替換指定的字符串,並返回替換后的整個字符串;

 

  SUBSTR(str FROM pos FOR len)
  介紹:從字符串中指定位置開始截取,並截取指定長度;這個函數的用法和Oracle是不一樣的。

  這里需要注意的是:

  不同於Java,pos的最小值是1,而不是0,並且將會從pos的位置進行截取(包含pos對應的值)。 

  另外,pos的值可以是負數,即:從后往前查,起始值為-1。  

3.解決方案

SELECT
	IFNULL(
	IF
		(
			t.PAYERPARTYTYPE = 1,
		IF
			(
				LENGTH( T.PAYERPARTYCODE ) = 18,
				REPLACE ( T.PAYERPARTYCODE, SUBSTR( T.PAYERPARTYCODE FROM 5 FOR 11 ), '***********' ),
			REPLACE ( T.PAYERPARTYCODE, SUBSTR( T.PAYERPARTYCODE FROM 5 FOR 8 ), '********' )),
			T.PAYERPARTYCODE -- 當PAYERPARTYTYPE不等於1時,不對PAYERPARTYCODE做處理
		),
		'' -- PAYERPARTYCODE為null時,將顯示空
	) PAYERPARTYCODE,
	t.PAYERPARTYTYPE
FROM
	`cz_fet_main_mz` t 
WHERE
	t.PAYERPARTYCODE IS NOT NULL 
	LIMIT 10;

寫在最后

  哪位大佬如若發現文章存在紕漏之處或需要補充更多內容,歡迎留言!!!

 相關推薦:

 


免責聲明!

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



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