ehxz 发表于 2007-10-16 17:37:02

从字符串中删除不需要的字符

问题

从数据中删除指定的字符,考虑下列的结果集:

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

要得到如下所示的STRIPPED1和STRIPPED2列中的值,删除所有的0和元音字母:

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

解决方案

每个DBMS都提供了函数用来从字符串中删除不需要的字符,对于本问题来说,常用的就是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函数来执行此操作:

1select 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函数来删除不需要的字符或字符串:

1select ename,

2         replace(translate(ename,'AEIOU','aaaaa'),'a')

3         as stripped1,

4         sal,   

5         replace(sal,0,'') as stripped2

6    from emp

讨论

使用内置的REPLACE函数删除字符串中所有的0,而要删除元音字母,使用TRANSLATE将所有的元音字符转换为一个指定的字符(在这里使用“a”,可以使用任意字符),然后使用REPLACE函数将该字符从字符串中全部删除掉。
页: [1]
查看完整版本: 从字符串中删除不需要的字符