1.情景展示   返回服务器的身份证号需要进行加密:只保留前4位和后3位,中间使用*代替,如何实现?

2.场景分析   需要用到的函数有:IFNULL(),IF(),LENGTH(),REPLACE(),SUBSTR(),这里重点介绍一下REPLACE()和SUBSTR()。

REPLACE(str,from_str,to_str)

介绍:将字符串中部分字符串替换指定的字符串,并返回替换后的整个字符串;


SUBSTR(str FROM pos FOR len)   介绍:从字符串中指定位置开始截取,并截取指定长度。

这里需要注意的是:

不同于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; 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20.

2021年11月28日13:11:47

4.mysql截取字符串 MySQL字符串截取函数:left(), right(), substring(), substring_index(), mid(), substr()。其中,mid(), substr() 等价于 substring() 函数。

left(str, length)

从字符串左侧开始截取指定长度。

right(str, length)

从字符串右侧开始截取指定长度。

substring(str, pos)与SUBSTRING(str FROM pos)

二者用法一致:从字符串指定位置开始截取,直到结束

substring(str,pos,len)与SUBSTRING(str FROM pos FOR len)

二者用法一致:从字符串指定位置开始截取,指定长度的字符串 说明:

当pos为正数时,表示:从字符串左侧开始计数并截取,起始值为1;

当pos为负数时,表示:从字符串右侧开始计数并截取,起始值为-1;