当前位置:   article > 正文

sql——字符串处理_sql 字符串处理

sql 字符串处理

1、遍历字符串

遍历KING这个字符串,每行打印一个
借助一个辅助表(辅助表的行数要大于KING的长度),这里面t10(有十行数据,如下)。

在这里插入图片描述

 select substr(e.ename,iter.pos,1) 
 from (select ename from emp where ename="KING") as e,(select id as pos from t10 ) iter 
 where length(e.ename)>=iter.pos;
  • 1
  • 2
  • 3

select substr(e.ename,1,length(e.ename)-pos+1) from (select ename from emp where ename="KING") as e,(select id as pos from t10 ) iter where length(e.ename)>=iter.pos;
  • 1

2、嵌入引号

在字符串常量中嵌入引号

select 'g"day mate' from t1 union all 
select 'beavers"teech' from t1 union all
select '"'from t1;
  • 1
  • 2
  • 3

3、字符串中逗号出现的次数

统计字符串中有多少个逗号?
思路:(字符串的总长度-字符串的去掉逗号的总长度)/一个逗号的长度。

select (length('10,CLARK,MANAGER')-length(replace('10,CLARK,MANAGER',',','')))/length(',') as cnt 
from t1;
  • 1
  • 2
length() //求字符串长度
replace(字符串,要替换的字符串,目标字符串)
  • 1
  • 2

4、删除不想要的字符

删除所有的元音字母A E I O U

select 
  replace(
  replace(
  replace(
  replace(
  replace(ename,'A',''),'E',''),'I',''),'O',''),'U','') as sal 
  from emp;
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

在这里插入图片描述
oracle 可以使用translate 字符集的替代

replace(translate(ename,'AEIOU','aaaaa'),'a','')
  • 1

5、分离数字和字符数据

将数据中的数字数据和字符数据分开,怎么办?
oracle
1)得到数字
将字母替换成同一个字母,再用replace函数替换为空。
2)得到字母
将数字替换成同一个数字,再用replace函数替换为空。
技巧函数rpad

RPAD(str,len,padstr)
//返回字符串str,用padstr右填充字符串,长度为len个字符。 如果str大于len,则返回值缩短为len个字符。
  • 1
  • 2

对于mysql 只能用replace嵌套

6、判断含有字母和数字的字符

从表里筛选出部分行数据,筛选条件是只包含字母和数字。

select ename from emp where ename regexp '[^0-9a-zA-Z]'=0;
  • 1
regexp 
//正则匹配
  • 1
  • 2

mysql方法

6、提取姓名的首字母

把姓名编程首字母形式,比如LeBron James就可以变成L.J.

trim()//去掉空格
ltrim()// 去掉左空格
rtrim()//去掉右空格
CONCAT(str1,str2,)//返回结果为连接参数产生的字符串。如有任何一个参数为NULL ,则返回值为 NULL。可以有一个或多个参数。
CONCAT_WS(separator,str1,str2,)//使用函数CONCAT_WS()。使用语法为:CONCAT_WS(separator,str1,str2,…)
GROUP_CONCAT()函数返回一个字符串结果,该结果由分组中的值连接组合而成。
substring_index(str,delim,count)
//str:要处理的字符串
//delim:分隔符
//count:计数
//例子:str=www.wikibt.com
//substring_index(str,'.',1)
//结果是:www
//substring_index(str,'.',2)
//结果是:www.wikibt
//substring_index(str,'.',-1)
//结果是com
substr(string string,num start,num length);
//string为字符串;start为起始位置;length为长度。mysql中的start是从1开始的.

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20

select (case 
      when then
      else 
      end ) as A
  • 1
  • 2
  • 3
  • 4

思考题

把行数据编程以某种符号分割符的列表,比如逗号

select DEPTNO,group_concat(EMPS) from deptment group by DEPTNO;
  • 1
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/神奇cpp/article/detail/1012215
推荐阅读
相关标签
  

闽ICP备14008679号