前事不忘,后事之师,不忘国耻!

 注册  找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2089|回复: 0

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

[复制链接]

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

[复制链接]
ehxz

主题

0

回帖

7251

积分

管理员

积分
7251
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函数来执行此操作:

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

讨论

使用内置的REPLACE函数删除字符串中所有的0,而要删除元音字母,使用TRANSLATE将所有的元音字符转换为一个指定的字符(在这里使用“a”,可以使用任意字符),然后使用REPLACE函数将该字符从字符串中全部删除掉。
免责申明1、欢迎访问本站,本文内容及相关资源来源于网络,版权归版权方所有!本站原创内容版权归本站所有,请勿转载!
2、本文内容仅代表作者观点,不代表本站立场,作者自负,本站资源仅供学习研究,请勿非法使用,否则后果自负!请下载后24小时内删除!
3、本文内容,包括但不限于源码、文字、图片等,仅供参考。本站不对其安全性,正确性等作出保证。但本站会尽量审核会员发表的内容。
4、如本帖侵犯到任何版权问题,请立即告知本站 ,本站将及时删除并致以最深的歉意!客服邮箱:admin@dbabbs.com
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|Archiver|小黑屋|DBA论坛中国 ( 鲁ICP备20017503号-2 )

GMT+8, 2024-11-22 17:49 , Processed in 0.074435 second(s), 11 queries , MemCached On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表