SQL如何實(shí)現(xiàn)Excel的分列功能?
點(diǎn)擊關(guān)注上方“SQL數(shù)據(jù)庫(kù)開(kāi)發(fā)”,
設(shè)為“置頂或星標(biāo)”,第一時(shí)間送達(dá)干貨
我們?cè)谔幚鞸QL里的數(shù)據(jù)時(shí)候,時(shí)不時(shí)會(huì)遇到對(duì)字符串進(jìn)行分割的情況。類似Excel中按指定字符進(jìn)行分列,今天給大家介紹兩種處理方法。
借助Excel進(jìn)行分割
先將數(shù)據(jù)從數(shù)據(jù)庫(kù)導(dǎo)出到Excel,使用Excel進(jìn)行分列后再導(dǎo)入到數(shù)據(jù)庫(kù)中。注意再次導(dǎo)入需要改變表結(jié)構(gòu),因?yàn)榉至泻髷?shù)據(jù)字段變多了,必須新建列進(jìn)行匹配。
使用函數(shù)進(jìn)行分割
使用CHARINDEX函數(shù),CHARINDEX函數(shù)的作用是如果能夠找到對(duì)應(yīng)的字符串,就返回該字符串的位置,否則返回0. 語(yǔ)法如下:
CHARINDEX(expressionTarget,expressionSource[,start_location]) expressionTarget:是我們要查找的目標(biāo)字符串?
expressionSource:是被查找的字符串?
start_location:開(kāi)始查找的起始位置,默認(rèn)為空表示從第一位開(kāi)始查找
例如:
SELECT??CHARINDEX('Road','SQL_Road')返回的結(jié)果為:5 就是表示字符串'Road'在字符串'SQL_Road'的第5個(gè)位置。 回到我們分列的用法上,我們可以這樣寫(xiě):
SELECT??
'ABCD,BDEF'?AS?R,
LEFT('ABCD,BDEF',CHARINDEX(',','ABCD,BDEF')-1) AS?R1 ,
RIGHT('ABCD,BDEF',(LEN('ABCD,BDEF') - CHARINDEX(',','ABCD,BDEF'))) AS?R2(提示:可以左右滑動(dòng)代碼)
返回的結(jié)果為

上面是對(duì)字符串'ABCD,BDEF'按照逗號(hào)(,)進(jìn)行分列。方法固定,如果是對(duì)其他符號(hào)進(jìn)行分列,只需要修改其中的符號(hào)即可。
以上就是兩種我常使用的辦法,希望對(duì)大家有幫助。

我是岳哥,最后給大家分享我寫(xiě)的SQL兩件套:《SQL基礎(chǔ)知識(shí)第二版》和《SQL高級(jí)知識(shí)第二版》的PDF電子版。里面有各個(gè)語(yǔ)法的解釋、大量的實(shí)例講解和批注等等,非常通俗易懂,方便大家跟著一起來(lái)實(shí)操。
有需要的讀者可以下載學(xué)習(xí),在下面的公眾號(hào)「數(shù)據(jù)前線」(非本號(hào))后臺(tái)回復(fù)關(guān)鍵字:SQL,就行
后臺(tái)回復(fù)關(guān)鍵字:1024,獲取一份精心整理的技術(shù)干貨
后臺(tái)回復(fù)關(guān)鍵字:進(jìn)群,帶你進(jìn)入高手如云的交流群。
推薦閱讀
后臺(tái)回復(fù)關(guān)鍵字:1024,獲取一份精心整理的技術(shù)干貨
后臺(tái)回復(fù)關(guān)鍵字:進(jìn)群,帶你進(jìn)入高手如云的交流群。
推薦閱讀
