前言:
要处理之前提及的,一些爬回来到数据库里面的大量!大量!大量的部分有逻辑的数据,要按照我们系统需要的格式进行处理。
先来看看是怎样的数据?又要处理成什么样数据?这里我把数据分类浓缩到一个表里,单独做展示,因为不可能拿原数据搞搞阵的啊。
是的,处理的数据大概如上面,要把它们分成地址和号码两列。
当然,数据量如上面那么少手动处理一下就好,但是数据有上万、上百万呢?
这里,我做了个取舍,因为还有很多其他无法完全考虑到的不规则数据,所以只对大批量可批次处理的数据进行整理,其余的就只好筛选出来后期进行手工处理了。
一、关于字符串处理函数(基础)
涉及数据处理,脑袋中首先就想到了:
left()/right()、ltrim()/rtrim()、replace()、substring()、cast()、convert()…
当然,还有很多函数,以上几个只是我平时处理数据库数据时,比较常用到的一些字符串处理函数而已。
现在就由此展开稍作整理记录。
1、字符转换函数
- ascii()和char()
ascii():将字符转换为对应ascii码
char():将ascii码转换为对应字符
select ascii('c') --c的ASCII码:99
select ascii(',') --逗号的ASCII码:44
select ascii(99) --99的ASCII码:57
select char(0) --0ascii码对应的字符:
select char(128) --128ascii码对应的字符:€
select char(129) --129ascii码对应的字符:NULL
char()的范围为0-128,不在范围内则返回null
- unicode()和nchar
和ascii()、char()的用法是相似的。
unicode():将字符转换为对应ascii码
nchar():将ascii码转换为对应字符
select unicode('c') --a的ASCII码:99
select unicode(',') --逗号的ASCII码:44
select unicode(99) --99的ASCII码:57
select nchar(0) --0ascii码对应的字符:
select nchar(65535) --128ascii码对应的字符:
select nchar(65536) --129ascii码对应的字符:NULL
nchar()的范围为0-65535,不在范围内则返回null
- lower()和upper()
lower(字符串):将大写英文字符转换为小写
upper(字符串):将小写英文字符转换为大写
select lower('XUEJIE') --xuejie
select lower('九十九A') --九十九a
select upper('xuejie') --XUEJIE
select upper('99a') --99A
仅限英文大小写转换
- str()
str(字符串,指定的长度,小数位数):把数值按指定的长度和小数位数返回
select str(3.1415926,10) --【 3】字符串整数位小于指定长度10,左边补足9个空格
select str(233.1415926,1) --【*】
select str(2333333,4,3) --【****】当字符串整数位大于指定长度时,指定长度为多少,返回多少个*
select str(233.1415926,6,-3) --【NULL】
select str(233.1415926,-6,3) --【NULL】当指定的长度值或小数位数值为负数时,返回null
select str(3.1415926,1) --【3】正确的使用范例
select str(233.1415926,6,3) --【233.14】正确的使用范例
2、空格去除函数
- ltrim()和rtrim()
ltrim(字符串):去掉字符串左边的所有空格
rtrim(字符串):去掉字符串右边的所有空格
select ' 处理左边空格' --【 处理左边空格】
select ltrim(' 处理左边空格') --【处理左边空格】
select '处理右边空格 ' --【处理右边空格 】
select rtrim('处理右边空格 ') --【处理右边空格】
3、从字符串中截取子字符串函数
- left()和right()
left(字符串,截取指定长度):从字符串左边第一位开始截取指定长的的字符串
right(字符串,截取的长度):从字符串右边第一位开始截取指定长的的字符串
select left('233.1415926',3) --233
select left('233.1415926',-3) --传递到 left 函数的长度参数无效
select right('233.1415926',3) --926
select right(