日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪(fǎng)問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

sql 截取

發(fā)布時(shí)間:2023/12/31 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 sql 截取 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
/*有時(shí)候我們需要將如下字符串進(jìn)行分割'1,12,123'希望得到這樣的結(jié)果:112123這里借助master.dbo.spt_values表來(lái)實(shí)現(xiàn)!*/--準(zhǔn)備數(shù)據(jù) IF OBJECT_ID('tempdb..#a') IS NOT NULL DROP TABLE #a SELECT '1,12,123' AS ids INTO #a--截取一個(gè)字符串需要知道開(kāi)始位置和截取長(zhǎng)度--1.尋找截取的開(kāi)始位置/*很明顯對(duì)于這個(gè)字符串的開(kāi)始截取位置是1(從第一個(gè)字符開(kāi)始截取),那么嘗試從位置1開(kāi)始截取,每次截取1個(gè)字符使用SUBSTRING(a.ids,b.number,1)后可以看到字符串的每個(gè)字符都被截取成單個(gè)的字符(一共8個(gè)字符)但是要截取兩位,三位的字符就得計(jì)算截取長(zhǎng)度了*/--2.計(jì)算截取的長(zhǎng)度/*分別截取1,12,123這三個(gè)數(shù)字1,12,123SUBSTRING(ids,1,1)----1 SUBSTRING(ids,3,2)----12SUBSTRING(ids,6,3)----123兩個(gè)問(wèn)題:1.怎么獲取開(kāi)始截取位置?2.怎么計(jì)算截取長(zhǎng)度?解決第一個(gè)問(wèn)題,可以通過(guò)加一個(gè)條件來(lái)篩選b.number,我們只需要1,3,6的值再看看這個(gè)字符串'1,12,123' 逗號(hào)所在的位置為:2,5試試在字符串'1,12,123' 前面加個(gè)逗號(hào) ',1,12,123' 這時(shí)逗號(hào)的位置是:1,3,6ok開(kāi)始位置就拿到了,加個(gè)條件實(shí)現(xiàn):AND SUBSTRING(','+a.ids,b.number,1)=','看看效果:ids number-------- -----------1,12,123 11,12,123 31,12,123 6解決第二個(gè)問(wèn)題:我們知道截取長(zhǎng)度分別是1,2,3 怎么計(jì)算?我們?cè)賮?lái)看看每個(gè)逗號(hào)的位置,以及number的數(shù)值ids number 逗號(hào)位置-------- ----------- -----------1,12,123 1 21,12,123 3 51,12,123 6 0發(fā)現(xiàn)逗號(hào)位置減去number將得到結(jié)果:1,2,-6還差一點(diǎn),如果逗號(hào)位置的最后一個(gè)數(shù)值是9就好了,怎么辦?試試往后再加一個(gè)逗號(hào)看看:'1,12,123,'現(xiàn)在最后一個(gè)逗號(hào)的位置就是9了吧!逗號(hào)位置:CHARINDEX(',',a.ids+',',b.number)截取長(zhǎng)度:CHARINDEX(',',a.ids+',',b.number)-b.number這樣我們就可以計(jì)算截取長(zhǎng)度了:ids number 逗號(hào)位置 截取長(zhǎng)度-------- ----------- ----------- -----------1,12,123 1 2 11,12,123 3 5 21,12,123 6 9 3截取的時(shí)候,從number開(kāi)始,按截取長(zhǎng)度來(lái)截取將是:ids number -------- ----------- --------1,12,123 1 11,12,123 3 121,12,123 6 123*/GO SELECT a.*,b.number, SUBSTRING(a.ids,b.number,CHARINDEX(',',a.ids+',',b.number)-b.number ) FROM #a a,spt_values b WHERE b.type='P' AND b.number BETWEEN 1 and LEN(a.ids) AND SUBSTRING(','+a.ids,b.number,1)=','

總結(jié)

以上是生活随笔為你收集整理的sql 截取的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。