新聞中心
在SqlServer有一個這樣的SQL查詢,select * from Product where ID in (12490,12494,12486)。在一個名為Project的表中對自增字段ID做in查詢,他希望查出來的記錄ID字段按照'12490','12494','12486'這個順序來排,但是很不幸的是查出來后的記錄是按照ID的進(jìn)行正排序,這并不符合他的要求。

創(chuàng)新互聯(lián)堅持“要么做到,要么別承諾”的工作理念,服務(wù)領(lǐng)域包括:網(wǎng)站建設(shè)、網(wǎng)站制作、企業(yè)官網(wǎng)、英文網(wǎng)站、手機端網(wǎng)站、網(wǎng)站推廣等服務(wù),滿足客戶于互聯(lián)網(wǎng)時代的青白江網(wǎng)站設(shè)計、移動媒體設(shè)計的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡(luò)建設(shè)合作伙伴!
查出的結(jié)果如下:
其實我們可以用SqlServer的CHARINDEX方法來完成這一實現(xiàn),代碼如下:
- select * from Product where ID in(12490,12494,12486)
- order by CHARINDEX(','+CONVERT(varchar(10),ID)+',',',12490,12494,12486,')
查詢的結(jié)果如下:
說明:這里用到一個小技巧,就是把ID轉(zhuǎn)成字符串,然后在兩邊加上",",組合一個字符串,用逗號隔開每個ID,然后查詢ID的下標(biāo)值(之所以兩邊加上","是因為查詢下標(biāo)的時候類似ID=123和ID=1234會查到同一個下標(biāo),網(wǎng)上給出的類似答案幾乎都沒有注意到這一點!?。。?。如果對CHARINDEX這個方法不看不明的話可以看下以下這個查詢,估計就明白了。
- select Product.*, CHARINDEX(','+CONVERT(varchar(10),ID)+',',',12490,12494,12486,') AsIdIndex
- from Product
- whereID in(12490,12494,12486)
- order byIdIndex
查詢結(jié)果如下(請看第二個表,***個表用來做對比),這里也可以發(fā)現(xiàn)一個細(xì)節(jié),就是Index是從1開始的,而不是0。
本文就介紹到這里,如果您有更好的實現(xiàn)方法,歡迎您與我們分享,共同進(jìn)步才是硬道理!
網(wǎng)站名稱:用CHARINDEX方法實現(xiàn)對字段按指定順序排序
當(dāng)前路徑:http://www.5511xx.com/article/cccihco.html


咨詢
建站咨詢
