截取字符串
我們?cè)谧鯞I可視化之前,通常需要已經(jīng)清洗干凈的數(shù)據(jù)才能進(jìn)行可視化分析。
隨著電商的發(fā)展,有很多數(shù)據(jù)都是從網(wǎng)上渠道抓取過(guò)來(lái)的,這就導(dǎo)致原始數(shù)據(jù)有很多對(duì)于分析來(lái)說(shuō)的無(wú)效數(shù)據(jù),那么在SQL中這部分?jǐn)?shù)據(jù)該如何進(jìn)行處理呢?
函數(shù)介紹
SUBSTRING語(yǔ)法:
SUBSTRING ( 表達(dá)式 , 開(kāi)始位置 , 長(zhǎng)度 )
返回結(jié)果為:返回字符、binary、text 或 image 表達(dá)式的一部分。
CHARINDEX語(yǔ)法:
CHARINDEX ( 目標(biāo)字符串 , 被查找字符串 [ , 開(kāi)始查找位置 ] )
若省略第三參數(shù),則默認(rèn)從第一位開(kāi)始查找。
返回結(jié)果:字符串開(kāi)始出現(xiàn)的位置。
PATINDEX語(yǔ)法:
PATINDEX ( '%字符串%' , 表達(dá)式)
第一參數(shù)可以使用通配符,第二參數(shù)通常為被查找的字符串。
返回結(jié)果:字符串開(kāi)始出現(xiàn)的位置。
注:
CHARINDEX函數(shù)與PATINDEX函數(shù)從結(jié)果上來(lái)看,二者的作用類(lèi)似,不過(guò)前者是完全匹配,后者支持模糊查詢(xún)。
使用實(shí)例
案例數(shù)據(jù):
在白茶本機(jī)的數(shù)據(jù)庫(kù)中存在名為“CaseData”的數(shù)據(jù)庫(kù)。
存在名為“案例數(shù)據(jù)”的表。從上圖中我們可以看出,數(shù)據(jù)量比較少,而且在[商品名稱(chēng)]這一列中存在很多的無(wú)用字符。
例子1:
提取手機(jī)的所有信息,并將[商品名稱(chēng)]中無(wú)用的字符串去掉。
代碼1:
SELECT SUBSTRING([商品名稱(chēng)],CHARINDEX('手機(jī)',[商品名稱(chēng)]),2) AS Product,*
FROM [案例數(shù)據(jù)]
WHERE [商品名稱(chēng)] LIKE N'%手機(jī)%'
結(jié)果如下:
解釋?zhuān)?/p>
這段代碼中,我們首先通過(guò)CHARINDEX函數(shù)定位到手機(jī)出現(xiàn)的字符串位置,再通過(guò)SUBSTRING函數(shù)進(jìn)行字符串截取。
代碼2:
SELECT SUBSTRING([商品名稱(chēng)],PATINDEX('%手機(jī)%',[商品名稱(chēng)]),2) AS Product,*
FROM [案例數(shù)據(jù)]
WHERE [商品名稱(chēng)] LIKE N'%手機(jī)%'
結(jié)果如下:
例子2:
提取[商品名稱(chēng)]中所有商品,并將[商品名稱(chēng)]中無(wú)用的字符串去掉。
代碼:
SELECT SUBSTRING([商品名稱(chēng)],
CHARINDEX('[',[商品名稱(chēng)])+1,CHARINDEX(']',[商品名稱(chēng)])-CHARINDEX('[',[商品名稱(chēng)])-1
)AS Product,*
FROM [案例數(shù)據(jù)]
結(jié)果如下:
解釋?zhuān)?/p>
這段代碼中,我們先判斷的是“[”符號(hào)首次出現(xiàn)的位置,來(lái)定位所有商品名稱(chēng)的首字符位置,再通過(guò)判斷“]”的位置來(lái)確認(rèn)商品名稱(chēng)的末字符位置,二者相減即為需要截取的字符串長(zhǎng)度。
這里是白茶,一個(gè)PowerBI的初學(xué)者。
