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"是比較大的。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM