如何用 SQL 提取字符串中的中文和數(shù)字?
點(diǎn)擊關(guān)注上方“SQL數(shù)據(jù)庫開發(fā)”,
設(shè)為“置頂或星標(biāo)”,第一時(shí)間送達(dá)干貨
SQL專欄
前天寫了篇《SQL如何提取字符串中的字母?》,今天再教大家如何提取中文和數(shù)字。
其實(shí)方法都是類似的,只是我們需要調(diào)整一下正則表達(dá)式而已。
提取數(shù)字
我們還是創(chuàng)建一個(gè)自定義函數(shù),具體代碼如下:
CREATE FUNCTION DBO.GET_NUMBER(@Str VARCHAR(100))
RETURNS VARCHAR(100)
AS
BEGIN
WHILE PATINDEX('%[^0-9]%',@Str) > 0
BEGIN
SET @Str=stuff(@Str,PATINDEX('%[^0-9]%',@Str),1,'')
END
RETURN @Str
END
GO測試自定義函數(shù)
SELECT dbo.GET_NUMBER('SQL數(shù)1據(jù)2庫3開4發(fā)5')結(jié)果:

提取中文字符
從提取字母和數(shù)字中,不知大家是否看出規(guī)律來了,就是在使用PATINDX函數(shù)時(shí),后面第一個(gè)參數(shù)會(huì)相應(yīng)的改變。字母的是[a-z],數(shù)字的是[0-9],那中文的是什么呢?看下面的代碼
CREATE FUNCTION DBO.GET_CHINESE(@Str NVARCHAR(100))
RETURNS VARCHAR(100)
AS
BEGIN
WHILE PATINDEX('%[^吖-座]%',@Str) > 0
SET @Str = STUFF(@Str,PATINDEX('%[^吖-座]%',@Str),1,N'')
RETURN @Str
END
GO測試自定義函數(shù)
SELECT dbo.GET_CHINESE('SQL數(shù)1據(jù)2庫3開4發(fā)5')結(jié)果:

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

