查看: 41664|回复: 20

如何通过函数去掉一个字段最后几位或者去掉特定的字符串?

[复制链接]
论坛徽章:
0
跳转到指定楼层
1#
发表于 2012-7-27 08:55 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
如何通过函数去掉一个字段最后几位或者去掉特定的字符串?

比如字段是 'aaaaa NANA','bbacd NANA','dfweogjeoejhje.weog.seor NANA' .....
都是这种,想去掉最后的NANA
论坛徽章:
6
灰彻蛋
日期:2013-01-29 08:43:10咸鸭蛋
日期:2013-01-24 15:45:18慢羊羊
日期:2015-03-04 14:53:332015年新春福章
日期:2015-03-06 11:58:39
2#
发表于 2012-7-27 09:23 | 只看该作者
SELECT SUBSTR(NAME,1,(LENGTH(NAME)-LENGTH('你想去掉的字符串'))) T FROM T1 WHERE 关联条件;
我测试如下
SELECT SUBSTR(NAME,1,(LENGTH(NAME)-LENGTH('HIJK'))) T FROM T1 WHERE VL =10;
-------
ABCDEFG
select * from t1 where vl =10;
--------
ABCDEFGHIJK 10

使用道具 举报

回复
论坛徽章:
4
奥运会纪念徽章:射箭
日期:2012-07-20 08:53:47奥运会纪念徽章:帆船
日期:2012-07-26 15:46:49夏利
日期:2013-09-04 11:34:22林肯
日期:2013-10-14 14:23:47
3#
发表于 2012-7-27 09:29 | 只看该作者
SUBSTR, 从第一位开始截取,截取到总长度减去不要的字符长度(包括空格) 就是结果

使用道具 举报

回复
论坛徽章:
90
生肖徽章2007版:牛
日期:2012-08-02 22:43:00紫蛋头
日期:2012-12-08 09:43:38鲜花蛋
日期:2012-11-17 12:02:07鲜花蛋
日期:2013-02-05 21:53:34复活蛋
日期:2012-11-17 12:02:07SQL极客
日期:2013-12-09 14:13:35SQL数据库编程大师
日期:2013-12-06 13:59:43SQL大赛参与纪念
日期:2013-12-06 14:10:50ITPUB季度 技术新星
日期:2012-11-27 10:16:10最佳人气徽章
日期:2013-03-19 17:24:25
4#
发表于 2012-7-27 09:57 | 只看该作者
如果以NANA结尾,什么其他字符都没有,那这样就可以了
  1. select regexp_replace('aaaaa NANA', 'NANA$', null) from dual;
复制代码

使用道具 举报

回复
论坛徽章:
0
5#
 楼主| 发表于 2012-7-27 10:32 | 只看该作者
nb2sfc 发表于 2012-7-27 09:29
SUBSTR, 从第一位开始截取,截取到总长度减去不要的字符长度(包括空格) 就是结果

我的字段是动态的,长度不唯一

使用道具 举报

回复
论坛徽章:
0
6#
 楼主| 发表于 2012-7-27 10:33 | 只看该作者
udfrog 发表于 2012-7-27 09:57
如果以NANA结尾,什么其他字符都没有,那这样就可以了

字段是动态的,你的是写死了

使用道具 举报

回复
论坛徽章:
90
生肖徽章2007版:牛
日期:2012-08-02 22:43:00紫蛋头
日期:2012-12-08 09:43:38鲜花蛋
日期:2012-11-17 12:02:07鲜花蛋
日期:2013-02-05 21:53:34复活蛋
日期:2012-11-17 12:02:07SQL极客
日期:2013-12-09 14:13:35SQL数据库编程大师
日期:2013-12-06 13:59:43SQL大赛参与纪念
日期:2013-12-06 14:10:50ITPUB季度 技术新星
日期:2012-11-27 10:16:10最佳人气徽章
日期:2013-03-19 17:24:25
7#
发表于 2012-7-27 10:40 | 只看该作者
看到回复,我哭了。。。楼主,我们的回复是告诉你用这个方法,字段动态你就换呗。。

使用道具 举报

回复
论坛徽章:
4
奥运会纪念徽章:射箭
日期:2012-07-20 08:53:47奥运会纪念徽章:帆船
日期:2012-07-26 15:46:49夏利
日期:2013-09-04 11:34:22林肯
日期:2013-10-14 14:23:47
8#
发表于 2012-7-27 10:41 | 只看该作者
tongleye 发表于 2012-7-27 10:32
我的字段是动态的,长度不唯一

2楼的写法不可以?2楼的写法可以实现字段总长度不唯一的情况,  你的意思是 想要去掉的字符 长度不唯一 是么?

使用道具 举报

回复
论坛徽章:
9
生肖徽章2007版:羊
日期:2009-08-24 09:30:46ITPUB9周年纪念徽章
日期:2010-10-08 09:32:252011新春纪念徽章
日期:2011-02-18 11:42:49SQL大赛参与纪念
日期:2011-04-13 12:08:17ITPUB十周年纪念徽章
日期:2011-11-01 16:23:262012新春纪念徽章
日期:2012-01-04 11:53:29ITPUB 11周年纪念徽章
日期:2012-10-09 18:07:31奥运纪念徽章
日期:2012-12-06 09:21:402013年新春福章
日期:2013-02-25 14:51:24
9#
发表于 2012-7-27 11:11 | 只看该作者

select test,                        -- test 字段的所有内容
       substr(test,-4) as test_str, -- test 字段的最后4个字符的内容
       decode(substr(test,-4),'NANA',substr(test,1,length(test)-4),test) as test_str2  -- 如果test字段的最后4个字符是'NANA',则去掉最后4个字符;否则:原型显示test字段
  from t;

TEST                           TEST_STR TEST_STR2
------------------------------ -------- ------------------------------------------------------------
aaaaa NANA                     NANA     aaaaa
bbacd NANA                     NANA     bbacd
dfweogjeoejhje.weog.seor NANA  NANA     dfweogjeoejhje.weog.seor
Luoyoumou Fuck you!            you!     Luoyoumou Fuck you!

使用道具 举报

回复
论坛徽章:
74
双鱼座
日期:2015-11-07 19:09:58奥运会纪念徽章:皮划艇静水
日期:2016-09-06 18:21:46乌索普
日期:2016-10-27 18:36:03蒙奇·D·路飞
日期:2016-11-18 18:51:29
10#
发表于 2012-7-27 11:20 | 只看该作者
用正则试试

使用道具 举报

回复

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

本版积分规则 发表回复

TOP技术积分榜 社区积分榜 徽章 团队 统计 知识索引树 积分竞拍 文本模式 帮助
  ITPUB首页 | ITPUB论坛 | 数据库技术 | 企业信息化 | 开发技术 | 微软技术 | 软件工程与项目管理 | IBM技术园地 | 行业纵向讨论 | IT招聘 | IT文档
  ChinaUnix | ChinaUnix博客 | ChinaUnix论坛
CopyRight 1999-2011 itpub.net All Right Reserved. 北京盛拓优讯信息技术有限公司版权所有 联系我们 未成年人举报专区 
京ICP备16024965号-8  北京市公安局海淀分局网监中心备案编号:11010802021510 广播电视节目制作经营许可证:编号(京)字第1149号
  
快速回复 返回顶部 返回列表