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

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


咨詢
建站咨詢
