亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 數據庫 > SQL Server > 正文

SQL Server 中master..spt_values的應用

2024-08-31 00:55:24
字體:
來源:轉載
供稿:網友
SQL Server 中master..spt_values的應用

今天在做數據分析報表的時候遇到一個這樣的問題。

表結構如下。部門編碼、部門名稱、部門人員ID(中間用逗號分割)

我想通過和人員表鏈接,查詢出一個新的數據集,查詢出的結果集格式如下:人員信息(ID或者姓名)、部門編碼、部門名稱

以前都是通過程序遍歷拆分表字段組成新的集合字段,然后在結合SQL語句查詢出結果集,但是這個報表要求只能通過SQL語句實現,以前記得可以通過寫字段分割函數再結合游標實現。然而今天在網上無意間找到一個新的方法。用“master..spt_values”來實現,具體實現方法見下面實例1感覺這個東西太好用了。把網上的實例都整理了一下,希望各路大神批評指教,也希望大家繼續把這方面的應用貼上.

select number from master..spt_values with(nolock) where type='P'/**解釋:master..spt_values表的字段值為P的對應number字段值是從0-2047*/     --1.將字符串轉換為列顯示   if object_id('tb') is not null drop table tb go create table tb([編號] varchar(3),[產品] varchar(2),[數量] int,[單價] int,[金額] int,[序列號] varchar(8)) insert into tb([編號],[產品],[數量],[單價],[金額],[序列號]) select '001','AA',3,5,15,'12,13,14' union allselect '002','BB',8,9,13,'22,23,24'go select [編號],[產品],[數量],[單價],[金額] ,substring([序列號],b.number,charindex(',',[序列號]+',',b.number)-b.number) as [序列號] from tb a with(nolock),master..spt_values b with(nolock) where b.number>=1 and b.number<len(a.[序列號]) and b.type='P'and substring(','+[序列號],number,1)=','go drop table tb go /** 編號   產品   數量          單價          金額          序列號 ---- ---- ----------- ----------- ----------- -------- 001  AA   3           5           15          12 001  AA   3           5           15          13 001  AA   3           5           15          14 002  BB   8           9           13          22 002  BB   8           9           13          23 002  BB   8           9           13          24 */ ----------   --2.第四個逗號之前的字符串 declare @str varchar(100) set @str='10,102,10254,103265,541,2154,41,156';with cte as( select left(@str,number-1) as ss,row_number()over(order by getdate()) as xh from master..spt_values with(nolock)  where number>=1 and number<=len(@str+',') and type='P' and substring(@str+',',number,1)=',')select ss from cte where xh=4 /** ss ------------------- 10,102,10254,103265 */ ----------     --3.找出兩句話中相同的漢字 declare @Lctext1 varchar(100) declare @Lctext2 varchar(100) set @Lctext1='我們都是來自五湖四海的朋友'set @Lctext2='朋友多了路真的好走嗎'select substring(@Lctext2,number,1) as value from master..spt_values with(nolock) where type='P' and number>=1 and number<=len(@Lctext2) and charindex(substring(@Lctext2,number,1),@Lctext1,number)>1 /** value ----- 朋 友 的 */ ---------     --4.提取兩個日期之間的所有月份 if object_id('tb') is not null drop table tb go create table tb(id int identity(1,1),startDate varchar(10),endDate varchar(10)) insert into tb(startDate,endDate) select '2013-01-01','2013-09-25'go declare @startDate varchar(10) declare @endDate varchar(10) select @startDate=startDate,@endDate=endDate from tb with(nolock) select convert(varchar(7),dateadd(mm,number,@startDate),120) as [月份] from master..spt_values with(nolock) where type='P' and number>=0 and dateadd(mm,number,@startDate)<=@endDate go drop table tb go /** 月份 ------- 2013-01 2013-02 2013-03 2013-04 2013-05 2013-06 2013-07 2013-08 2013-09 */ ---------     --5.求一個日期所在月份的所有日期 declare @date datetime set @date='2013-08-31'select convert(char(7),@date,120)+'-'+right('0'+convert(varchar(2),number),2) as [日期格式1] ,ltrim(year(@date))+right(100+month(@date),2)+right('0'+ltrim(number),2) as [日期格式2] from master..spt_values with(nolock) where type='P' and number>=1 --and number<=datediff(dd,@date,dateadd(mm,1,@date)) --對于mssql而言該語句不試用于2013-08-31的情況,這時由于9月沒有31號,固計算出來的天數是30天 and number<=datediff(dd,convert(char(7),@date,120)+'-01',convert(char(7),dateadd(mm,1,@date),120)+'-01')--轉換為1號來計算天數 /** 日期格式1       日期格式2 ----------- -------------------- 2013-08-01  20130801 2013-08-02  20130802 2013-08-03  20130803 2013-08-04  20130804 2013-08-05  20130805 2013-08-06  20130806 2013-08-07  20130807 2013-08-08  20130808 2013-08-09  20130809 2013-08-10  20130810 2013-08-11  20130811 2013-08-12  20130812 2013-08-13  20130813 2013-08-14  20130814 2013-08-15  20130815 2013-08-16  20130816 2013-08-17  20130817 2013-08-18  20130818 2013-08-19  20130819 2013-08-20  20130820 2013-08-21  20130821 2013-08-22  20130822 2013-08-23  20130823 2013-08-24  20130824 2013-08-25  20130825 2013-08-26  20130826 2013-08-27  20130827 2013-08-28  20130828 2013-08-29  20130829 2013-08-30  20130830 2013-08-31  20130831 */ ---------     --6.根據給定時間為基準以2小時為劃分,得出一天劃分出的時間段 declare @time varchar(5) set @time='11:13'select ltrim(a.number)+right(@time,3)+'-'+ltrim(b.number)+right(@time,3) as [劃分結果] from master..spt_values a with(nolock),master..spt_values b with(nolock) where a.type='P' and b.type='P'and a.number>=left(@time,2) and b.number<=24 and a.number+2=b.number /** 劃分結果 ----------------------------------- 11:13-13:13 12:13-14:13 13:13-15:13 14:13-16:13 15:13-17:13 16:13-18:13 17:13-19:13 18:13-20:13 19:13-21:13 20:13-22:13 21:13-23:13 22:13-24:13 */ ---------     --7.將字符串顯示為行列 if object_id('tb') is not null drop table tb create table tb(id int identity(1,1),s nvarchar(100)) insert into tb(s) select '車位地址1,車位狀況1|車位地址2,車位狀況2|車位地址n,車位狀況n';with cte as( select substring(s,number,charindex('|',s+'|',number)-number) as ss from tb with(nolock),master..spt_values with(nolock) where type='P' and number>=1 and number<=len(s) and substring('|'+s,number,1)='|')select left(ss,charindex(',',ss)-1)as s1,substring(ss,charindex(',',ss)+1,len(ss))as s2 from cte drop table tb /** s1             s2 ----------- ------------ 車位地址1      車位狀況1 車位地址2      車位狀況2 車位地址n      車位狀況n */


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
91国产精品91| 亚洲天堂影视av| 日韩在线观看免费av| 国产美女高潮久久白浆| 96pao国产成视频永久免费| 91亚洲永久免费精品| 国产91ⅴ在线精品免费观看| 欧美性一区二区三区| 中文字幕欧美精品日韩中文字幕| 欧美孕妇毛茸茸xxxx| 久久久久国产精品一区| 欧美影院在线播放| 91久久精品美女高潮| 国产精品h片在线播放| 少妇av一区二区三区| 色综合久综合久久综合久鬼88| 日本高清+成人网在线观看| 精品国产乱码久久久久酒店| 日韩大陆欧美高清视频区| 国产精品大陆在线观看| 日韩精品中文在线观看| 欧美成人黑人xx视频免费观看| 久久全国免费视频| 久久综合电影一区| 欧美一级bbbbb性bbbb喷潮片| 国产一区私人高清影院| 国产有码在线一区二区视频| 欧美激情国产精品| 热久久免费视频精品| 亚洲精品国产综合区久久久久久久| 亚洲天堂视频在线观看| 亚洲国产精品大全| 欧美中文字幕在线播放| 动漫精品一区二区| 亚洲va久久久噜噜噜久久天堂| 欧美乱大交xxxxx另类电影| 国产欧美日韩精品专区| 欧美亚洲日本网站| 日韩国产欧美精品一区二区三区| 在线观看欧美日韩| 亚洲精品国产福利| 亚洲娇小xxxx欧美娇小| 午夜美女久久久久爽久久| 欧美在线精品免播放器视频| 亚洲视频在线观看免费| 国产精品亚洲片夜色在线| 热久久免费视频精品| 久久精品国产99国产精品澳门| 亚洲综合精品伊人久久| 精品国产成人在线| 国产亚洲精品久久| 国产一区二区三区在线免费观看| 久久精品国产综合| 国产一区二区三区高清在线观看| 日韩电影中文字幕在线| 国产精品电影网| 国产精品视频公开费视频| 69av在线播放| 91精品久久久久久久久久入口| 亚洲黄色片网站| 欧美日韩国产成人高清视频| 自拍偷拍亚洲欧美| 国产精品久久久久免费a∨大胸| 国产欧美日韩精品在线观看| 亚洲欧美日韩在线高清直播| 亚洲国产一区自拍| 欧美电影在线观看| 亚洲国产精品专区久久| 国产精品成人一区二区三区吃奶| 亚洲精品91美女久久久久久久| 亚洲高清av在线| 色偷偷噜噜噜亚洲男人的天堂| 久久视频精品在线| 久久国产精品网站| 午夜精品99久久免费| 久久久精品国产| 国产99在线|中文| 日韩电视剧在线观看免费网站| 久久久久一本一区二区青青蜜月| 最好看的2019的中文字幕视频| 国产成人小视频在线观看| 日韩视频中文字幕| 亚洲成人久久一区| 91av免费观看91av精品在线| 亚洲精品国偷自产在线99热| 亚洲成色999久久网站| 亚洲国产另类 国产精品国产免费| 海角国产乱辈乱精品视频| 中文字幕av日韩| 91精品国产高清| 欧美日韩综合视频网址| 亚洲精品久久7777777| 欧美色videos| 91九色国产社区在线观看| 精品久久国产精品| 国产精品电影网| 亚洲一区二区三区视频| 在线午夜精品自拍| 国产精品久久久久久婷婷天堂| 亚洲小视频在线| 欧美电影在线观看网站| 亚洲福利视频网站| 国产精自产拍久久久久久蜜| 精品亚洲一区二区| 日韩精品久久久久| 亚洲毛片在线免费观看| 久久久久亚洲精品| 永久免费毛片在线播放不卡| 日韩中文字幕视频在线| 国产精品高清在线| 91国产美女在线观看| 国产精品丝袜白浆摸在线| 欧美性猛交丰臀xxxxx网站| 国产不卡av在线| 久热精品在线视频| 久久成人人人人精品欧| 欧美成人激情视频免费观看| 国产自产女人91一区在线观看| 国产欧美在线看| 久久999免费视频| 亚洲欧美制服第一页| 欧美另类精品xxxx孕妇| 国产亚洲成精品久久| 欧美限制级电影在线观看| 欧美激情第6页| 亚洲色图五月天| 一夜七次郎国产精品亚洲| 精品久久久久久亚洲国产300| 亚洲成人免费在线视频| 黑人巨大精品欧美一区二区免费| 久久精品99久久久香蕉| 国产精品午夜国产小视频| 亚洲欧美激情精品一区二区| 久久精品国产欧美亚洲人人爽| 久久久久久国产精品三级玉女聊斋| 精品在线欧美视频| 成人伊人精品色xxxx视频| 色狠狠av一区二区三区香蕉蜜桃| 国产精品久久久91| 日韩av手机在线观看| 97在线精品国自产拍中文| 亚洲欧美中文字幕| 粉嫩av一区二区三区免费野| 2019中文字幕在线| 国产97在线播放| 国产在线久久久| 韩国福利视频一区| 久久伊人91精品综合网站| 亚洲成人在线视频播放| 97香蕉久久夜色精品国产| 精品中文字幕乱| 日本精品免费一区二区三区| 国产成人精品午夜| 国产一区二区三区毛片| 亚洲免费电影在线观看| 国产精品劲爆视频| 中文字幕亚洲一区在线观看| 青青久久av北条麻妃黑人| 欧美黑人性生活视频| 日韩av网站电影| 日韩免费电影在线观看| 欧美尺度大的性做爰视频| 欧美日韩国产影院| 色综合伊人色综合网|