在工作中遇到的修改一批数据的问题,不需要更改库里的数据,只要将符合要求的数据显示出来即可,主要是表里的数据量很大,不适合手动修改,而且要修改的数字不具有唯一性。
问题描述:
将20位的00000000000000080492改成Z0000000000000080492,00000000000000080492字段为varchar(20)类型的serialno。
解决办法:
PLSQL中:
select concat('Z',substrB(to_char(a.serialno),2,19)) from 表名 where ...
注意:
- 将varchar转换为字符型,用 to_char(变量)即可。
- 拼接字符串用concat(string1,string2,…)函数,只要其中一个是NULL,那么结果将返回NULL
如果是将数据将Z0000000000000080492改成00000000000000080492,那就方法太多了。
- 比如将库里那个表一列数据全部拉取出来放到编辑器如notepad++,使用替换功能将‘Z’换成‘0’即可;
- 也可以使用SQL语句。类似的修改一下SQL也挺快的。
select concat('0',substrB(to_char(a.serialno),2,19)) from 表名 where ...
这样显示得到的数据可以直接拿出来放到excel里面,你想对他干嘛就可以干嘛,很省时间。
掌握该语句,想修改第几位 的数据就怎么修改。虽然写的这语句不是最好的,可是很简单实用