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

摘要:
1.场景显示返回到服务器的ID号需要加密:LENGTH()、REPLACE()、SUBSTR()。用指定的字符串替换字符串的一部分,并从字符串中的指定位置截取。pos的最小值为1,从pos的位置截取(包括pos的相应值)。3.解SELECTIFNULL(IF(t.PAYERPARTYTYPE=1,
 

1.情景展示

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

2.场景分析

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

  REPLACE(str,from_str,to_str)

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

MySQL 替换和截取指定位置字符串第1张 

  SUBSTR(str FROM pos FOR len)
  介绍:从字符串中指定位置开始截取,并截取指定长度;这个函数的用法和Oracle是不一样的。

MySQL 替换和截取指定位置字符串第2张

  这里需要注意的是:

  不同于Java,pos的最小值是1,而不是0,并且将会从pos的位置进行截取(包含pos对应的值)。 

MySQL 替换和截取指定位置字符串第3张

  另外,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;

MySQL 替换和截取指定位置字符串第4张

写在最后

  哪位大佬如若发现文章存在纰漏之处或需要补充更多内容,欢迎留言!!!

 相关推荐:

 

免责声明:文章转载自《MySQL 替换和截取指定位置字符串》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Vuepress 默认主题样式修改(部署篇) iis~ iis发布网站遇到的问题以及解决方案下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

终于理解二级指针的作用了

之前学习swap函数时,知道传递指针可以实现对要交换变量本尊的修改,而直接传递值做不到这一点.究其原因,是因为函数传递参数时是以拷贝的形式,因此函数内部对其拷贝进行操作,不会影响到本尊. 如果想要通过函数实现对一级指针的值进行修改该如何去做呢?如果直接把它传进去,其实修改的是它的拷贝,而对它并没有影响.这个时候就是二级指针出场的时候了. #include...

overload 函数或过程重载

//overload 函数或过程重载 重载的思想很简单:编译器允许你用同一名字定义多个函数或过程,只要它们所带的参数不同。实际上,编译器是通过检测参数来确定需要调用的例程。下面是从VCL的数学单元(Math Unit)中摘录的一系列函数:function Min (A,B: Integer): Integer; overload;function Min...

动态链接库

  动态链接库(DLL),其是windows操作系统的基础,其通常不能直接运行,也不能接收消息。它们是一些独立的文件,其中包含能被可执行程序或其他DLL调用来完成某项工作的函数。只有在其他模块调用动态链接库中的函数时,它才发挥作用。   Windows API中所有的函数都包含在DLL中,其中有3个重要的DLL。 Kernel32.dll 它包含那些用...

java中的“空格”用trim()无法去除?原来是这样!

1、原因:   从txt文件中读取一些数据导入mysql数据库,导入数据库之后发现有一个字段的前面有两个“空格”,后来在代码里我尝试用trim()、replace()等方法去除,发现怎么也去不掉,于是我将字符串里的这个“空格”的ASCII码输出,输出12288,查询资料后发现这个字符是全角空格,用trim()、replace()等方法是无法去除的,采用如下...

7-18 输出10个不重复的英文字母 (50 分)

7-18 输出10个不重复的英文字母 (50 分) 随机输入一个字符串,把最左边的10个不重复的英文字母(不区分大小写)挑选出来。 如没有10个英文字母,显示信息“not found” 输入格式: 在一行中输入字符串 输出格式: 在一行中输出最左边的10个不重复的英文字母或显示信息“not found" 输入样例1: 在这里给出一组输入。例如: poemp...

SQL Server 自定义字符串分割函数

一、按指定符号分割字符串,返回分割后的元素个数,方法很简单,就是看字符串中存在多少个分隔符号,然后再加一,就是要求的结果(标量值函数)   1 create function Func_StrArrayLength 2 ( 3 @str varchar(1024), --要分割的字符串 4 @split varchar(...