SQL 删除不想要的字符,你想从你的数据里删除指定的字符,考虑下面的结果集。
SQL 删除不想要的字符 问题描述
你想从你的数据里删除指定的字符,考虑下面的结果集。
ENAME SAL
---------- ----------
SMITH 800
ALLEN 1600
WARD 1250
JONES 2975
MARTIN 1250
BLAKE 2850
CLARK 2450
SCOTT 3000
KING 5000
TURNER 1500
ADAMS 1100
JAMES 950
FORD 3000
MILLER 1300
你希望从上面的数据里删除所有的 0 和元音字母,并将删除后的值显示在 STRIPPED1
列和 STRIPPED2
列中。
ENAME STRIPPED1 SAL STRIPPED2
---------- ---------- ---------- ---------
SMITH SMTH 800 8
ALLEN LLN 1600 16
WARD WRD 1250 125
JONES JNS 2975 2975
MARTIN MRTN 1250 125
BLAKE BLK 2850 285
CLARK CLRK 2450 245
SCOTT SCTT 3000 3
KING KNG 5000 5
TURNER TRNR 1500 15
ADAMS DMS 1100 11
JAMES JMS 950 95
FORD FRD 3000 3
MILLER MLLR 1300 13
SQL 删除不想要的字符 解决方案
方案每个数据库管理系统都提供了可以删除一个字符串里不想要的字符的函数,其中最有用的函数是 REPLACE
和 TRANSLATE
。
DB2
使用内置函数 TRANSLATE
和 REPLACE
删除不想要的字符和字符串。
1 select ename,
2 replace(translate(ename,'aaaaa','AEIOU'),'a','') stripped1,
3 sal,
4 replace(cast(sal as char(4)),'0','') stripped2
5 from emp
MySQL 和 SQL Server
MySQL 和 SQL Server 没有提供 TRANSLATE
函数,因而需要多次调用 REPLACE 函数。
1 select ename,
2 replace(
3 replace(
4 replace(
5 replace(
6 replace(ename,'A',''),'E',''),'I',''),'O',''),'U','')
7 as stripped1,
8 sal,
9 replace(sal,0,'') stripped2
10 from emp
Oracle 和 PostgreSQL
使用内置函数 TRANSLATE
和 REPLACE
删除不想要的字符和字符串。
1 select ename,
2 replace(translate(ename,'AEIOU','aaaaa'),'a')
3 as stripped1,
4 sal,
5 replace(sal,0,'') as stripped2
6 from emp
SQL 删除不想要的字符 扩展知识
内置函数 REPLACE
会删除 0。为了删除元音字母,先使用 TRANSLATE
函数把元音字母替换成一个特殊的字符(我选择了字母 a
,当然也可以选其他字符),然后使用 REPLACE
函数删除这个特殊字符。