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;

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;

2、嵌入引号

在字符串常量中嵌入引号

select 'g"day mate' from t1 union all 
select 'beavers"teech' from t1 union all
select '"'from t1;

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

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

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

4、删除不想要的字符

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

select 
  replace(
  replace(
  replace(
  replace(
  replace(ename,'A',''),'E',''),'I',''),'O',''),'U','') as sal 
  from emp;

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

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

5、分离数字和字符数据

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

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

对于mysql 只能用replace嵌套

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

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

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

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开始的.

select (case 
      when then
      else 
      end ) as A

思考题

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

select DEPTNO,group_concat(EMPS) from deptment group by DEPTNO;
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值