度量快速开发平台-专业、快速的软件定制快开平台

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 部件 流程 SQL
查看: 5990|回复: 10
打印 上一主题 下一主题

[分享] oracle中去除年龄数据中“岁”字

  [复制链接]

542

主题

5916

帖子

1万

积分

作者

Rank: 7Rank: 7Rank: 7

积分
13589
跳转到指定楼层
楼主
发表于 2020-6-5 15:18:34 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
原始数据类似下图:
由于年龄不确定,可能为1岁、可能为10岁、可能为100岁等;
因此使用下面这条语句并不合适:
select substr('20岁',1,2) 年龄 from dual;

那么要如何去掉年龄后边的“岁”字呢?实现方法如下:
--去掉年龄中的“岁”字;从第一位开始,截取到第n-1位
select substr(age,1,length(age)-1) 年龄 from test1;

--去掉年龄中的“岁”字;去除右边算起匹配的字符
select rtrim(age,'岁') 年龄 from test1;

--替换年龄中的“岁”字
select replace(age,'岁','') 年龄 from test1;

-------------------------------------------------------------------------------------------------------
substr函数的简单用法:
substr(字符串,截取开始位置,截取长度) //返回截取的字
substr('Hello World',0,1) //返回结果为 'H'  *从字符串第一个字符开始截取长度为1的字符串
substr('Hello World',1,1) //返回结果为 'H'  *0和1都是表示截取的开始位置为第一个字符
substr('Hello World',2,4) //返回结果为 'ello'
substr('Hello World',-3,3)//返回结果为 'rld' *负数(-i)表示截取的开始位置为字符串右端向左数第i个字符

-------------------------------------------------------------------------------------------------------
oracle中trim,ltrim,rtrim函数用法
第一种:去除空格。
--TRIM去除指定字符的前后空格
SQL> SELECT TRIM(' dd df ') FROM dual;
TRIM('DDDF')
------------
dd df

--LTRIM去除指定字符的前面空格
SQL> SELECT LTRIM(' dd df ') FROM dual;
LTRIM('DDDF')
-------------
dd df

--RTRIM去除指定字符后面后空格
SQL> SELECT RTRIM(' dd df ') FROM dual;
RTRIM('DDDF')
-------------
dd df


第二种,去除指定的字符。
--trim只能去除单个字符,而ltrim和rtrim可以去除多个字符
SQL> SELECT trim(leading 'd' from 'dfssa') FROM dual;
TRIM(LEADING'D'FROM'DFSSA')
---------------------------
fssa

SQL> SELECT trim(both '1' from '123sfd111') FROM dual;
TRIM(BOTH'1'FROM'123SFD111')
----------------------------
23sfd

--用trim去除字符只能是单个字符,否则报错
SQL> SELECT trim(trailing '12' from '123dsq12') FROM dual;
SELECT trim(trailing '12' from '123dsq12') FROM dual
ORA-30001: 截取集仅能有一个字符




ltrim和rtrim去除字符的写法:
--表示字符串string1去除前面与string2字符集匹配的,若无匹配则结束返回
SELECT ltrim(string1,string2) FROM dual;
--rtrim与ltrim类似,只是去除的是右边算起匹配的字符
SELECT rtrim(string1,string2) FROM dual;
例子:
--如下,由于从右边算起,第一个字母是b没有与'main'匹配的字符,因此返回结果仍是'aaaaminb'
SQL> SELECT rtrim('aaaaminb','main') FROM dual;
RTRIM('AAAAMINB','MAIN')
------------------------
aaaaminb

--如下返回结果为空
SQL> SELECT rtrim('aaaaminb','mainb') FROM dual;
RTRIM('AAAAMINB','MAINB')
-------------------------

SQL> SELECT ltrim('ccbcminb','cb') FROM dual;
LTRIM('CCBCMINB','CB')
----------------------
minb


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

542

主题

5916

帖子

1万

积分

作者

Rank: 7Rank: 7Rank: 7

积分
13589
沙发
 楼主| 发表于 2020-6-5 15:19:17 | 只看该作者
自顶一个
回复 支持 反对

使用道具 举报

198

主题

1313

帖子

3806

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
3806
板凳
发表于 2020-6-5 15:20:28 | 只看该作者
方法多多,自己掌握!可以可以
回复 支持 反对

使用道具 举报

542

主题

5916

帖子

1万

积分

作者

Rank: 7Rank: 7Rank: 7

积分
13589
地板
 楼主| 发表于 2020-6-5 15:22:21 | 只看该作者
王爱东 发表于 2016-1-5 15:20
方法多多,自己掌握!可以可以


回复 支持 反对

使用道具 举报

328

主题

3738

帖子

8566

积分

作者

Rank: 7Rank: 7Rank: 7

积分
8566
QQ
5#
发表于 2020-6-5 17:19:55 | 只看该作者
可以,完美的解决了,今天我的问题。
回复 支持 反对

使用道具 举报

328

主题

3738

帖子

8566

积分

作者

Rank: 7Rank: 7Rank: 7

积分
8566
QQ
6#
发表于 2020-6-5 17:19:56 | 只看该作者
可以,完美的解决了,今天我的问题。
回复 支持 反对

使用道具 举报

328

主题

3738

帖子

8566

积分

作者

Rank: 7Rank: 7Rank: 7

积分
8566
QQ
7#
发表于 2020-6-5 17:19:56 | 只看该作者
可以,完美的解决了,今天我的问题。
回复 支持 反对

使用道具 举报

542

主题

5916

帖子

1万

积分

作者

Rank: 7Rank: 7Rank: 7

积分
13589
8#
 楼主| 发表于 2020-6-5 17:21:43 | 只看该作者
陈晓龙 发表于 2016-1-5 17:19
可以,完美的解决了,今天我的问题。

回复 支持 反对

使用道具 举报

348

主题

3572

帖子

9726

积分

论坛元老

Rank: 8Rank: 8

积分
9726
9#
发表于 2020-6-7 08:28:57 | 只看该作者
若現在就覺得失望無力,未來那麽遠妳該怎麽扛...
————————————————————————致自己
回复 支持 反对

使用道具 举报

67

主题

685

帖子

1815

积分

作者

Rank: 7Rank: 7Rank: 7

积分
1815
10#
发表于 2020-6-7 09:11:46 | 只看该作者
总结得可以嘛
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|玉祥公司客服-玉祥集团客服  本站关键词:快速开发平台

GMT+8, 2024-4-30 18:43 , Processed in 0.144662 second(s), 28 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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