一、拆分字符串为若干行
例一:要求将表emp中的'king'按照每行一个单词拆成四行
注意:substr(str,pos):截取pos位置开始的字符;
substr(str,pos,len):从pos位置开始,选出接下去的len个字符
表emp:
eid | ename |
1 | ring |
2 | king |
3 | ting |
4 | ping |
首先,建立表tmp(基干表,为了配合表一使用):
tid |
1 |
2 |
3 |
4 |
5 |
然后,select emp.ename,tmp.tid from emp,tmp where emp.ename=‘king’;/*没有主键和外键,生成king的笛卡尔集/
ename tid
king 1
king 2
king 3
king 4
king 5
最后:select substr (ename,tid,1) as a from (select emp.ename,tmp.tid from emp,tmp where emp.ename=‘king’) as e where e.tid <= length(e.ename);
结果:
a:
k
i
n
g
若select substr (ename,tid) as b, substr(ename,length(ename)-tid+1).......结果将会出现
b c
king g
ing ng
ng ing
g king
二、计算字符在字符串中出现的次数
replace函数:replace(要搜索的字符串表达式,要查找的字符串,替换字符串)
例二:计算10,clark,manager中逗号的个数
select (length('10,clark,manager')-length(replace('10,clark,manager',',',''))/length(',')) as c from tablename;