文档章节

oracle字符串排序问题记录

smileNicky
 smileNicky
发布于 2018/12/02 22:46
字数 769
阅读 237
收藏 0

本博客记录一下一次踩坑记录,过程是这样的,在跟一个bug,涉及到一张中间表,然后这张中间表的主键是自增的,不过因为对接其它系统,出现了主键唯一性冲突,所以我就只好改数据了,思路是想查最大值,然后修改数据。原本认为既然是一张中间表,那我不改关联表就好,我改中间表的主键应该不会影响系统。不料还是出现了数据问题了。

查询这张中间表的主键的最大值时,我并没有注意到是varchar类型的,以为是number类型的,数据库采用Oracle。PS:Oracle并没有int类型,这点和MySQL不一样。

查询到间表的id最大的值,很自然的,就敲条sql select max(id) from Table a; 这条sql就得到最大值,看起来很正常,不过我并没有注意到这个id是varchar类型,所以开发过程,需要仔细一点,虽然我们都知道这个道理,不过在项目很赶,或者状态不好的情况,还是很多人不仔细,所以我还是记录一下,仅仅是作为个人的笔记记录一下而已,然后仅仅是参考,希望能给别人一些启发。

我查出的最大值是9999,不过偶然发现,竟然有个10000+的数值,这样我就纳闷了。所以,这里说一下,这个id是字符串类型的,字符串类型的排序和number类型的排序是不一样的,Oracle字符串比较大小是根据ASCII来的,字符串排序是先比较第一个字符,eg:这里列举"9"和"10"的列子,这里的"9"和"10"都是字符串类型的,比较过程是这样的,先从第一个字符比较,'9'比'1'大,所以,"9"排在前面,"10"排在后面。PS:字符串比较就是这样根据ASCII来,先比较第一个字符,如果相等,在比较第二个字符,以此类推...

所以SQL:select max(id) from Table a;就会出现"9"比"10"大的情况,这里的id是字符串类型。 要得出正确的情况:在Oracle里就要用SQL:

	select max(to_number(id)) from Table a;

然后我在改数据的过程出现了问题,然后幸好有公司导师相助,得到了一条数据库回滚的SQL,所以还是学到了。下面给出SQL,希望可以帮助学习的人

【表数据恢复回N分钟之前】

alter table 表名 enable row movement; 
flashback table 表名 to timestamp systimestamp - interval 'N' minute; 

© 著作权归作者所有

smileNicky
粉丝 12
博文 19
码字总数 24361
作品 2
西城
程序员
私信 提问
☆MySQL order by limit 分页数据重复问题

0 问题描述 在MySQL中我们通常会采用limit来进行翻页查询,比如limit(0,10)表示列出第一页的10条数据,limit(10,10)表示列出第二页。但是,当limit遇到order by的时候,可能会出现翻到第二页...

猿码道
2018/05/14
0
0
MySQL · 答疑解惑 · MySQL Sort 分页

背景 6.5号,小编在 Aliyun 的论坛中发现一位开发者提的一个问题,说 RDS 发现了一个超级大BUG,吓的小编一身冷汗 = =!! 赶紧来看看,背景是一个RDS用户创建了一张表,在一个都是NULL值的非索...

阿里云RDS-数据库内核组
2015/06/05
0
0
关于MYSQL替换和存储过程的问题、

关于MYSQL替换和存储过程的问题、 业务场景是源数据排序问题、导致终端节目排序混乱、之前约定的排序字段sequence全是0,于是想到用节目标题中的数字来排序、如“甄说红楼之15—刘姥姥得济出...

p至尊宝
2016/04/18
57
1
万变不离其宗之海量数据下的算法问题处理思路

本文介绍 万变不离其宗之海量数据下的算法问题处理思路 万变不离其宗之海量数据下的算法问题处理思路 本文由在当地较为英俊的男子金天大神原创,版权所有,欢迎转载,但请保留这段版权信息,...

Nicholas_Jela
2017/09/06
0
0
Oracle查询忽略大小写的实现方法

转自:http://database.51cto.com/art/201010/231561.htm Oracle查询有时候要受到一些条件的制约,比如大小写。下面为您介绍了一个实现Oracle查询忽略大小写的方法,如果您对Oracle查询方面感...

巴顿
2015/02/10
59
0

没有更多内容

加载失败,请刷新页面

加载更多

linux查询日志命令总结

【背景】 排查线上环境问题,少不了去线上查日志。而使用什么命令,能快速准确地查到我们需要查找地日志信息,也是我们需要掌握的一项技能。 【命令】 Linux查看命令有多种:tail,head,cat...

chen-chen-chen
20分钟前
3
0
net/http 接收文件

代码展示,如何使用golang 自带net/http,将Form表单中提交上来的文件,指定位置保存。 ReadHtmlFile OutHtml(html网页,表单测试代码使用) SaveFile (处理提交文件) package mainimport...

听夜深窗外风
24分钟前
2
0
c++ 强制类型转换

强制类型转换 p545

天王盖地虎626
27分钟前
4
0
再读Golang中的异常处理

一起重温Golang中的异常处理啊😸 1.Golang语言中没有其他语言中的try...catch...语句来捕获异常和异常恢复 2.在Golang中我们通常会使用panic关键字来抛出异常,在defer中使用recover来捕获...

Andy-xu
46分钟前
9
0
TiDB 最佳实践系列(三)乐观锁事务

作者:Shirly TiDB 最佳实践系列是面向广大 TiDB 用户的系列教程,旨在深入浅出介绍 TiDB 的架构与原理,帮助用户在生产环境中最大限度发挥 TiDB 的优势。我们将分享一系列典型场景下的最佳实...

TiDB
今天
16
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部