DB2数据库字符比较大小

碰到一个这样的需求:查询页面的查询条件有一条:按XXX号起始、XXX号截止查询两个号码之间的所有数据("XXX号"由字母数字组成)。

遇到此问题时,第一反应是:字母数字在一起怎么比较大小?谁大谁小?

于是,我自己在库(DB2)中修改了足够多的数据来测试一下,数据(字段名:"REVERSE1")很简单0-9,A-Z,a-z,还有一些为null。简单的测试了一下:

1.sql语句:select REVERSE1 from syscompany order by REVERSE1;

2.结果:技术分享技术分享技术分享技术分享

3.结论:DB2数据库字母数字比较大小的规则为:0-9<a<A<b<B<c<C<......<z<Z;

但是我们在实际运用中,我们遇到的肯定是好长的数字字母组合成的字符串,重点是还不知道输入的字母有多长,那么对于不等长的字符串比较大小又是什么样子的呢,我试了一下:

以下图片基于的查询条件的sql语句为:

技术分享

XXX号对应:voucher0_.VOUCHERREGNO字段。

1.我没有输入XXX号进行查询,结果:

技术分享

2.我在"XXX号 从:"  查询条件处输入 "VPDJp" ,在" 到:" 查询条件处输入"z",结果:

技术分享

可以看出,其比较大小的时候,是按从前往后的顺序一个字符一个字符的去比较,如果前一个字符小了,就不看后面的字符了。

然后,我又想到一个问题,如果根据前一个字符大小来判断整个字符串的大小,那么如果我的字符如果是:VPDJP0200000015001421313814152和VPDJP020000001500142131381415200比较,也就是前面相同,但是后面没有任何字母数字了与"0"比较,谁大谁小呢?试验一下:

1.我在"XXX号 从:"  查询条件处输入 "VPDJP0200000015001421313814152" ,在" 到:" 查询条件处输入"VPDJP0200000015001421313814152",结果:

技术分享

2.我在"XXX号 从:"  查询条件处输入 "VPDJP0200000015001421313814152" ,在" 到:" 查询条件处输入"VPDJP020000001500142131381415200",结果:

技术分享

由此可以看出:在前面字符相同的情况下,后面没有数据与"0"比较,"0"是比较大的。

 

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。