字符函数-(学习笔记)

--字符函数
--upper()将字符转换为大写
--lower()将字符转换为小写

SELECT UPPER('liunan'),LOWER('LIUNAN')
FROM dual;


--查询SMITH的信息,写smith写成小写,用UPPER转换为大写

SELECT *
FROM emp e
WHERE e.ename=UPPER('smith');


--查询所有员工的姓名并将所有员工姓名,首字母大写

SELECT e.empno,e.ename 原来的姓名,INITCAP(e.ename) 员工姓名首字母大写
FROM emp e;


--查询所有员工的编号,姓名,并且将员工姓名中所有字母A替换为字符'_'

SELECT e.empno,e.ename 原来的姓名,
REPLACE(ename,'A','_') 字母A替换为字符_
FROM emp e;
SELECT e.empno,e.ename 原来的姓名,
Translate(ename,'A','_') 字母A替换为字符_
FROM emp e;


--查询出姓名长度是5的所有员工信息

SELECT *
FROM emp e
WHERE LENGTH(e.ename)=5;


--查询姓名前3个是JAM的员工信息substr

SELECT *
FROM emp e
WHERE substr(e.ename,0,3)='JAM';
SELECT *
FROM emp e
WHERE e.ename LIKE 'JAM%';

--查询所有10部门员工的姓名,但不显示第个员工的前3个字母

SELECT e.deptno,e.ename 原来的姓名,
SUBSTR(e.ename,4) 不显示前3个字母姓名
FROM emp e
WHERE e.deptno=10;


--显示所有员工的姓名及后3个字母 -负代数从后向前

SELECT e.ename 原来的姓名,SUBSTR(e.ename,-3) 后3个字母
FROM emp e;


--用LENGTH也可以实现

SELECT e.ename 原来的姓名,SUBSTR(e.ename,-3) 后3个字母,
SUBSTR(e.ename,LENGTH(e.ename)-2) 后3个字母
FROM emp e;


--substr下标是从1开始的,设置为0会自动从1开始,设置为负数从后向前截取
--返回指定字符的ASCII码

SELECT ASCII('A'),ASCII('a') FROM dual;
--chr()将ASCII变为字符
SELECT CHR('65'),CHR('97') FROM dual;
SELECT ASCII('A'),ASCII('a'),CHR('65'),CHR('97') FROM dual;

--去掉左边空格

SELECT LTRIM(' liunan ') FROM dual;
--去掉右边空格
SELECT LTRIM(' liunan ') 去掉左边空格,
RTRIM(' liunan ') 去掉右边空格
FROM dual;

--去掉2边空格

SELECT LTRIM(' liunan ') 去掉左边空格,
RTRIM(' liunan ') 去掉右边空格,
TRIM(' liunan ') 去掉2边空格
FROM dual;


--LTRIM/RTRIM也可以截取

SELECT LTRIM('xyzadams','xyz') 左侧去掉xyz,
RTRIM('xyzadams','ams') 右侧去掉ams
FROM dual;


--字符左,右填充函数LPAD(),RPAD()

SELECT LPAD('liunan',10,'*') 去掉字符长度后左侧填充指定字符,
RPAD('liunan',10,'*') 去掉字符长度后左侧填充指定字符,
RPAD(LPAD('liunan',10,'*'),14,'*') 搭配使用左右填充
FROM dual;

 位置查找

select instr('abcedfghedfghijk','edf',1,2) from dual;
--查找edf在字符串中出现第二次的位置,从1开始
--结果为:9
原文地址:https://www.cnblogs.com/liunanjava/p/4208065.html