赞
踩
遍历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;
在字符串常量中嵌入引号
select 'g"day mate' from t1 union all
select 'beavers"teech' from t1 union all
select '"'from t1;
统计字符串中有多少个逗号?
思路:(字符串的总长度-字符串的去掉逗号的总长度)/一个逗号的长度。
select (length('10,CLARK,MANAGER')-length(replace('10,CLARK,MANAGER',',','')))/length(',') as cnt
from t1;
length() //求字符串长度
replace(字符串,要替换的字符串,目标字符串)
删除所有的元音字母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','')
将数据中的数字数据和字符数据分开,怎么办?
oracle
1)得到数字
将字母替换成同一个字母,再用replace函数替换为空。
2)得到字母
将数字替换成同一个数字,再用replace函数替换为空。
技巧函数rpad
RPAD(str,len,padstr)
//返回字符串str,用padstr右填充字符串,长度为len个字符。 如果str大于len,则返回值缩短为len个字符。
对于mysql 只能用replace嵌套
从表里筛选出部分行数据,筛选条件是只包含字母和数字。
select ename from emp where ename regexp '[^0-9a-zA-Z]'=0;
regexp
//正则匹配
mysql方法
把姓名编程首字母形式,比如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;
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。