oracle中,如何批量替换某字段的部分值,该字段其他部分保持不变?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了oracle中,如何批量替换某字段的部分值,该字段其他部分保持不变?相关的知识,希望对你有一定的参考价值。
例如 字段field 值 记录有 A001,A0002,B003,B004,将该字段首字母替换为P,执行结果为P001,P0002,P003,P004
1、创建测试表;
create table test_str_replace(id varchar2(20),value varchar2(20));
2、插入测试数据;
insert into test_str_replace values('1','abcbcade');
insert into test_str_replace values('2','aaabcbca');
insert into test_str_replace values('3','aabcaabcab');
commit;
3、查询表中全量数据;select t.*, rowid from test_str_replace t;
4、编写语句,将value字段中'abc'替换成'123',其他保持不变;
select t.*, regexp_replace(value,'abc','123') cnt from test_str_replace t ;
参考技术A 废话少说,直接上菜!update TABLE_NAME set field =REPLACE(field ,substr(field ,0,1) ,'P') where field is not null ;
参考资料:感谢kuaikelong,感谢军军,感谢LDC。感谢自己!
本回答被提问者和网友采纳 参考技术B update table set 字段名= REPLACE(字段名,substr(字段名,0,1) ,'要替换成的内容');substr(字段名,0,1)--0,1为要替换的字段部分的起始位置。
sql语句,如何截取指定字段某一个字符出现后的后面的字符串吗
我想选出前200行的电影,并且首字母升序排列而且需要 电影描述中,是发生地在boat的,发生地总是出现在description中并且是在in 后边,其实就是筛选出description 句子里in后边的东西,然后判断存不存在boat这个单词。
用的是oracle
工具/材料:Management Studio。
1、首先在桌面上,点击“Management Studio”图标。
2、之后在该界面中,点击左上角“新建查询”选项。
3、接着在该界面中,输入截取指定字段某一个字符出现后的后面的字符串的sql语句“
select substring(name,charindex(',',name)+1,len(name)-charindex(',',name)) from test2;”。
4、然后在该界面中,点击左上方“执行”按钮。
5、最后在该界面中,显示截取指定字段某一个字符出现后的后面的字符串成功。
如test表中有如下数据,要求截图str字段中逗号后边的内容。
可用如下语句:
select id,substring(str,charindex(',',str)+1,len(str)-charindex(',',str)) from test;
结果截图:
charindex函数说明:
语法:
CHARINDEX ( expression1 , expression2 , [ start_location ] )
参数:
expression1
一个表达式,其中包含要寻找的字符的次序。expression1 是一个短字符数据类型分类的表达式。
expression2
一个表达式,通常是一个用于搜索指定序列的列。expression2 属于字符串数据类型分类。
start_location
在 expression2 中搜索 expression1 时的起始字符位置。如果没有给定 start_location,而是一个负数或零,则将从 expression2 的起始位置开始搜索。
substring函数说明:
语法:
substring( expression, start, length)
参数:expression 字符串、二进制字符串、文本、图像、列或包含列的表达式start 整数或可以隐式转换为 int 的表达式,指定子字符串的开始位置length 整数或可以隐式转换为 int 的表达式,指定子字符串的长度
以上是关于oracle中,如何批量替换某字段的部分值,该字段其他部分保持不变?的主要内容,如果未能解决你的问题,请参考以下文章