SQL 练习一 字符型函数

处理字符串时,利用字符型函数的嵌套组合是非常有效的,试分析一道考题:

create table customers(cust_name varchar2(20));

 

insert into customers values(‘lex de hann’);

insert into customers values(‘renske ladwig’);

insert into customers values(‘jose manuel urman’);

insert into customers values(‘joson malin’);

 

select * from customers;

cust_name

——————–

lex de hann

renske ladwig

jose manuel urman

joson malin

一共四条记录,客户有两个名的,也有三个名的,现在想列出仅有三个名的客户,且第一个名字用*号略去

答案之一:

select lpad(substr(cust_name,instr(cust_name,’ ‘)),length(cust_name),’*’) “cust name”

from customers

where instr(cust_name,’ ‘,1,2)<>0;

cust name

————————————————————————————————————————

*** de hann

**** manuel urman

 

分析:

先用instr(cust_name,’ ‘)找出第一个空格的位置,

然后,substr(cust_name,instr(cust_name,’ ‘))从第一个空格开始往后截取字符串到末尾,结果是第一个空格以后所有的字符,

最后,lpad(substr(cust_name,instr(cust_name,’ ‘)),length(cust_name),’*’)用lpad左填充到cust_name原来的长度,不足的部分用*填充,也就是将第一个空格前的位置,用*填充。

where后过滤是否有三个名字,instr(cust_name, ‘ ‘,1,2)从第一个位置,从左往右,查找第二次出现的空格,如果返回非0值,则说明有第二个空格,则有第三个名字。

(0)
上一篇 2022年3月22日
下一篇 2022年3月22日

相关推荐