關(guān)于PostgreSQL截取某個(gè)字段中的部分內(nèi)容進(jìn)行排序的問(wèn)題
一.最基本的order by排序
本文使用的測(cè)試數(shù)據(jù)庫(kù)信息如下:

1.單列排序案例:查詢student表中所有數(shù)據(jù)并且按照成績(jī)從大到小排序
SELECT * FROM student order by score desc
2.多列排序案例:查詢student表中所有數(shù)據(jù)并且先按照成績(jī)從大到小排序,如果成績(jī)相同,再按照 id 從大到小排序
兩種寫(xiě)法均可:
SELECT * FROM "student" order by (score,id) desc SELECT * FROM "student" order by score desc,id desc
錯(cuò)誤寫(xiě)法:
SELECT * FROM "student" order by score,id desc
上述寫(xiě)法的意思是:先按照成績(jī)從小到大排序,如果成績(jī)相同,再按照id從大到小排序
二.步入正題
開(kāi)發(fā)過(guò)程中遇到一個(gè)案例,例如上面student表中的學(xué)號(hào)字段(stu_number),學(xué)號(hào)前三位和后面三位都是相同的,現(xiàn)在需要按照stu_number的中間三位進(jìn)行從大到小排序,使用了substr()函數(shù)。
SELECT substr(stu_number,4,3),* FROM "student" order by substr(stu_number,4,3) desc
效果如下:

PostgreSQL中substr()函數(shù)的用法介紹:
1.從str內(nèi)容的第2個(gè)字符開(kāi)始截取,直到結(jié)束——substr(str,pos)
substr('HelloWord',2)2.從str內(nèi)容的第2個(gè)字符開(kāi)始截取,截取長(zhǎng)度為3的字符串——substr(str,pos,len)
substr('HelloWord',2,3)substr()函數(shù)的第一個(gè)參數(shù)可以為固定的字符串內(nèi)容,如上面的'HelloWord',也可以直接用數(shù)據(jù)庫(kù)表中的某個(gè)字段,如上面案例中填寫(xiě)的stu_number字段,但是填寫(xiě)的字段必須為字符串類型
Java中substring()方法和PostgreSQL中substr()函數(shù)都是用來(lái)截取字符串的,但是用法上有些許區(qū)別:
1.Java中substring()方法的索引是從0開(kāi)始的,而PostgreSQL中substr()函數(shù)的索引是從1開(kāi)始的,例如:
//Java
String str = "HelloWord";
String substr = str.substring(2);
//PostgreSQL
substr('HelloWord',2)上面的Java代碼的意思是從第三個(gè)字符開(kāi)始截取,直到結(jié)束,而PostgreSQL代碼的意思是從第二個(gè)字符開(kāi)始截取,直到結(jié)束。
2.參數(shù)含義不同
Java中substring(int beginIndex, int endIndex)表示從第beginIndex+1個(gè)字符開(kāi)始截取,直到第endIndex個(gè)字符,例如:
String str = "HelloWord"; String substr = str.substring(2,6);
上面的Java代碼的意思是從第三個(gè)字符開(kāi)始截取,直到第六個(gè)字符,即截取的內(nèi)容為:lloW
PostgreSQL中substr(str, pos, len)函數(shù)表示從第pos個(gè)字符開(kāi)始截取,截取長(zhǎng)度為len的字符串,例如:
substr('HelloWord',2, 6)上面的代碼的意思是從第二個(gè)字符開(kāi)始截取,截取長(zhǎng)度為6的字符串,即截取的內(nèi)容為:elloWo
到此這篇關(guān)于PostgreSQL截取某個(gè)字段中的部分內(nèi)容進(jìn)行排序的文章就介紹到這了,更多相關(guān)PostgreSQL排序內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
PostgreSQL之分區(qū)表(partitioning)
通過(guò)合理的設(shè)計(jì),可以將選擇一定的規(guī)則,將大表切分多個(gè)不重不漏的子表,這就是傳說(shuō)中的partitioning。比如,我們可以按時(shí)間切分,每天一張子表,比如我們可以按照某其他字段分割,總之了就是化整為零,提高查詢的效能2016-11-11
深入解讀PostgreSQL中的序列及其相關(guān)函數(shù)的用法
這篇文章主要介紹了PostgreSQL中的序列及其相關(guān)函數(shù)的用法,包括序列的更新和刪除等重要知識(shí),需要的朋友可以參考下2016-01-01
RuoYi從MySQL遷移到PostgreSQL數(shù)據(jù)庫(kù)的踩坑實(shí)錄
隨著業(yè)務(wù)發(fā)展對(duì)數(shù)據(jù)庫(kù)性能要求的提升,MySQL遷移至PostgreSQL成為企業(yè)級(jí)應(yīng)用的常見(jiàn)需求,下面這篇文章主要介紹了RuoYi從MySQL遷移到PostgreSQL數(shù)據(jù)庫(kù)的相關(guān)資料,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下2026-02-02
postgresql 刪除重復(fù)數(shù)據(jù)的幾種方法小結(jié)
這篇文章主要介紹了postgresql 刪除重復(fù)數(shù)據(jù)的幾種方法小結(jié),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2021-02-02
postgresql通過(guò)索引優(yōu)化查詢速度操作
這篇文章主要介紹了postgresql通過(guò)索引優(yōu)化查詢速度操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-12-12
PostgreSQL的generate_series()函數(shù)的用法說(shuō)明
這篇文章主要介紹了PostgreSQL的generate_series()函數(shù)的用法說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2021-01-01

