丝袜人妻一区二区三区_少妇福利无码视频_亚洲理论片在线观看_一级毛片国产A级片

當(dāng)前位置:首頁(yè) > 科技數(shù)碼

字符統(tǒng)計(jì) SQL如何統(tǒng)計(jì)字符出現(xiàn)次數(shù)?

朋友們,我們?cè)趯?xiě)SQL腳本時(shí),經(jīng)常會(huì)碰到一些個(gè)看似簡(jiǎn)單、卻無(wú)從下手的問(wèn)題,這類問(wèn)題說(shuō)大不大、說(shuō)小也不小,經(jīng)常會(huì)搞的我們很頭痛。

比如,

如何使用SQL語(yǔ)句統(tǒng)計(jì)字符在某個(gè)字符串中出現(xiàn)的次數(shù)?

這就是個(gè)看似簡(jiǎn)單的問(wèn)題,遍查SQL支持的字符串函數(shù)(至少在MSSQL中),并沒(méi)有發(fā)現(xiàn)有直接可用的函數(shù)。

其實(shí),絕大部分情況下,只要我們學(xué)會(huì)了變通,很多讓我們苦惱的問(wèn)題很容易就迎刃而解了。不信請(qǐng)您往下看。

不變通也能解決問(wèn)題,雖然復(fù)雜,但用到的技術(shù)都是基本功

因?yàn)闆](méi)有相應(yīng)的內(nèi)置函數(shù),大部分朋友首先想到的是:

把整個(gè)字符串按照字符位置遍歷,一個(gè)個(gè)匹配

。這種方法應(yīng)該是大部分朋友們首先會(huì)想到的方法。

這個(gè)方法當(dāng)然肯定可行,因?yàn)楣P者以前就這樣干過(guò)。我把曾經(jīng)寫(xiě)過(guò)的腳本改造下貼出來(lái),您看看多麻煩:

--定義變量declare @pos bigint=1;declare @len bigint;declare @char nvarchar(1);declare @text nvarchar(max);declare @val varchar(max)=space(0);declare @count bigint=0;--初始化一些變量set @text=N"印度囂張、越南陰險(xiǎn)、美國(guó)霸道、中國(guó)低調(diào)、、、";set @len=len(@text);--統(tǒng)計(jì)“、”出現(xiàn)個(gè)數(shù)while @pos<=@len begin --將所有的部分循環(huán)完全 set @char=substring(@text,@pos,1) if @char="、" set @count+=1; set @pos=@pos+1 --end--顯示個(gè)數(shù)print @count;

上面的代碼段,主要用來(lái)統(tǒng)計(jì)字符串@text中包含的“、”的個(gè)數(shù),下圖是執(zhí)行的效果:

為了統(tǒng)計(jì)“、”的個(gè)數(shù),需要通過(guò)while循環(huán),將字符串中所有字符做一次遍歷,獲取每個(gè)位置字符使用的是substring函數(shù),通過(guò)變量@pos記錄當(dāng)前字符的位置,循環(huán)一次,該變量累加1表示位置后移一位。

這種方法雖然挺復(fù)雜,但所用到的都是SQL的基礎(chǔ)知識(shí),當(dāng)然也需要一定的SQL功底,不管您喜不喜歡,最起碼您要能看得懂這類代碼對(duì)吧。

這種方式除了麻煩,還有致命缺點(diǎn),比如,有時(shí)我們需要在某條SQL腳本中、根據(jù)某個(gè)字段中含有某個(gè)字符的個(gè)數(shù)來(lái)做排序或判斷,這種方法就麻煩了,您需要寫(xiě)成自定義函數(shù)調(diào)用才行。

世上本無(wú)事、庸人自擾之,我下面為您提供一種變通方式,一條腳本實(shí)現(xiàn)之。

變通方法需要靈活變通,需要您換換思考的方式!

正向思維中,查找字符串中包含的某個(gè)字符的個(gè)數(shù),當(dāng)然是通過(guò)遍歷挨個(gè)對(duì)比。其實(shí)我們可以采用逆向思維:如果我們把要找的字符從字符串中全部干掉,那字符串減少的長(zhǎng)度不就是包含的個(gè)數(shù)么?!

如何干掉待查找字符呢?這就要用到另一個(gè)字符串處理函數(shù)replace。腳本如下:

declare @text nvarchar(max)=N"印度囂張、越南陰險(xiǎn)、美國(guó)霸道、中國(guó)低調(diào)、、、";select len(@text)-len(replace(@text,"、",space(0)));

簡(jiǎn)單吧,我們使用字符串長(zhǎng)度減去替換成space(0)之后的長(zhǎng)度,不正是“、”出現(xiàn)的次數(shù)么?

下面是運(yùn)行效果:

與第一種方法相比,第二種方法可謂是簡(jiǎn)單快捷、殊途同歸。很多時(shí)候我們需要將結(jié)果嵌入在SQL中,比如在where條件中、排序時(shí)等,如果用到該個(gè)數(shù)做判斷或排序,您就只能用第二種方法、或者將第一種腳本改成自定義函數(shù)來(lái)調(diào)用了。

1.《字符統(tǒng)計(jì) SQL如何統(tǒng)計(jì)字符出現(xiàn)次數(shù)?》援引自互聯(lián)網(wǎng),旨在傳遞更多網(wǎng)絡(luò)信息知識(shí),僅代表作者本人觀點(diǎn),與本網(wǎng)站無(wú)關(guān),侵刪請(qǐng)聯(lián)系頁(yè)腳下方聯(lián)系方式。

2.《字符統(tǒng)計(jì) SQL如何統(tǒng)計(jì)字符出現(xiàn)次數(shù)?》僅供讀者參考,本網(wǎng)站未對(duì)該內(nèi)容進(jìn)行證實(shí),對(duì)其原創(chuàng)性、真實(shí)性、完整性、及時(shí)性不作任何保證。

3.文章轉(zhuǎn)載時(shí)請(qǐng)保留本站內(nèi)容來(lái)源地址,http://f99ss.com/keji/486965.html

上一篇

定向減肥 減肥新方案:納米粒子定向輸藥

下一篇

百度推廣價(jià)格 百度競(jìng)價(jià)排名終于不再以價(jià)格為主

云服務(wù)器存儲(chǔ) 5個(gè)數(shù)據(jù)告訴你亞馬遜云存儲(chǔ)有多大

云服務(wù)器存儲(chǔ) 5個(gè)數(shù)據(jù)告訴你亞馬遜云存儲(chǔ)有多大

本站訊 11月15日消息,據(jù)彭博社報(bào)道,亞馬遜的云平臺(tái)龐大而復(fù)雜,幾乎可以說(shuō),支持這一平臺(tái)的數(shù)據(jù)中心可以構(gòu)成地球上最大的計(jì)算機(jī)。本周,在一年一度的re:Invent 大會(huì)上,亞馬遜對(duì)AWS服務(wù)進(jìn)行了諸多解說(shuō),對(duì)于正在物色云平臺(tái)的企業(yè)而言,亞馬遜的這番推介使AWS成為一項(xiàng)更具吸引力的選擇。曾為AWS項(xiàng)目工作的亞馬遜前員工喬什?斯特拉(Josh St...

數(shù)控開(kāi)料機(jī)哪個(gè)品牌好 開(kāi)料機(jī)系統(tǒng)怎么選擇?哪個(gè)數(shù)控系統(tǒng)比較好?

  • 數(shù)控開(kāi)料機(jī)哪個(gè)品牌好 開(kāi)料機(jī)系統(tǒng)怎么選擇?哪個(gè)數(shù)控系統(tǒng)比較好?
  • 數(shù)控開(kāi)料機(jī)哪個(gè)品牌好 開(kāi)料機(jī)系統(tǒng)怎么選擇?哪個(gè)數(shù)控系統(tǒng)比較好?
  • 數(shù)控開(kāi)料機(jī)哪個(gè)品牌好 開(kāi)料機(jī)系統(tǒng)怎么選擇?哪個(gè)數(shù)控系統(tǒng)比較好?

rand函數(shù) 解讀Excel中的RAND函數(shù)和RANDBETWEEN函數(shù)用法和差異

  • rand函數(shù) 解讀Excel中的RAND函數(shù)和RANDBETWEEN函數(shù)用法和差異
  • rand函數(shù) 解讀Excel中的RAND函數(shù)和RANDBETWEEN函數(shù)用法和差異
  • rand函數(shù) 解讀Excel中的RAND函數(shù)和RANDBETWEEN函數(shù)用法和差異
七日年化是什么意思 七日年化收益率是什么意思 這個(gè)數(shù)值越高越好嗎

七日年化是什么意思 七日年化收益率是什么意思 這個(gè)數(shù)值越高越好嗎

相信很多市民都有投資過(guò)貨幣基金,如支付寶中的理財(cái)產(chǎn)品余額寶,在這些理財(cái)產(chǎn)品中都會(huì)顯示七日年化收益率,但是一些剛?cè)胪顿Y圈的投資者,會(huì)問(wèn)及七日年化收益率是什么意思?這個(gè)數(shù)值越高越好嗎?對(duì)此,下面我們就來(lái)了解一下吧?;鹗找媛?七日年化收益率是貨幣基金過(guò)去七天每萬(wàn)份基金份額凈收益折合成的年收益率。貨幣基金的每日收益情況都會(huì)隨著基金經(jīng)理的操作和貨幣市場(chǎng)利...

半角字符 半角字符怎么輸入   如何切換為全角字符

半角字符 半角字符怎么輸入 如何切換為全角字符

現(xiàn)在我們的生活水平在不斷的提高,電腦也隨之在我們的生活中變得很常見(jiàn),電腦的功能是比較的多的,我們?cè)谑褂秒娔X的時(shí)候經(jīng)常就會(huì)遇到很多的問(wèn)題。例如,有些人在打字的時(shí)候就不知道怎么切換到全角字符,于是打出來(lái)的字符的間距就會(huì)比較的大,也不是很美觀。小編針對(duì)這一情況,來(lái)具體的教大家究竟該半角字符如何進(jìn)行切換。希望大家能仔細(xì)的閱讀一下?! “虢亲址趺摧斎?如...

word首行縮進(jìn)2字符 如何將Word中將全文段落設(shè)置為首行縮進(jìn)2字符

word首行縮進(jìn)2字符 如何將Word中將全文段落設(shè)置為首行縮進(jìn)2字符

在【段落】選項(xiàng)中將【首行縮進(jìn)】的縮進(jìn)值調(diào)整為【2】即可。以下是詳細(xì)介紹:  1、首先全選文本,可以通過(guò)光標(biāo)或者是直接使用【Ctrl】+【A】全選;  2、上方【布局】選項(xiàng)卡,選擇【段落】,點(diǎn)擊欄目右下角的按鈕展開(kāi)【段落】更多的選項(xiàng);  3、在段落更多功能選項(xiàng)中,在【縮進(jìn)和間距】的標(biāo)簽頁(yè),找到右側(cè)【特殊格式】;  4、在下拉圖標(biāo)當(dāng)中,我們選擇【首行...

function js中function函數(shù)的使用方法

  • function js中function函數(shù)的使用方法
  • function js中function函數(shù)的使用方法
  • function js中function函數(shù)的使用方法
split函數(shù) split函數(shù)

split函數(shù) split函數(shù)

p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Arial; color: #333333; -webkit-text-stroke: #333333; background-color: #ffffff}span.s1 {font-kerning: none}span.s2 {font-k...