MSSQL截取字符串中字母,數字及特定數字

早上上班時,有位同事問我能不能使用sql腳本 截取字符串中特定數字,比如是想獲取特定字符後面的數字,比如獲取ID:後的數字。我廢話不多說直接貼代碼。

declare @str varchar(100),@str2 varchar(100)
set   @str= '{ID:123,name:生活資訊網,url:http://www.naoqiu.com}'
--如果是想獲取特定字符後面的數字,比如獲取ID:後的數字
set @str=substring(@str,patindex('%ID:[0-9]%',@str),len(@str))
--得到以第一個數字開始的字符串
select @str2=substring(@str,patindex('%[0-9]%',@str),len(@str))
--得到第一個非數字開始的位置,並根據此位置刪除其及以後的字符
,@str2=left(@str2,patindex( '%[^0-9]%',@str2)-1)
select @str2
go


順便我也貼個自己編寫的函數 提取截取字符串中數字,字母。腳本如下:

--=======================
--截取字符串中所有的數字
--SELECT dbo.Fun_GetNum('{ID:123,name:生活資訊網,url:http://www.naoqiu.com}')
--=======================
CREATE function dbo.Fun_GetNum( @No NVARCHAR(4000))
RETURNS INT
AS
BEGIN
    WHILE PATINDEX('%[^0-9]%',@No)>0 BEGIN
        SET @No=STUFF(@No,PATINDEX('%[^0-9]%',@No),1,'')
    END
    RETURN CONVERT(INT,@No)
END
go



--=======================
--截取字符串中所有的字母
--SELECT dbo.Fun_GetLetter('{ID:123,name:生活資訊網,url:http://www.naoqiu.com}')
--=======================
Create function dbo.Fun_GetLetter(@Letter NVARCHAR(4000))
RETURNS NVARCHAR(100)
AS
BEGIN
    WHILE PATINDEX('%[^A-Z]%',@Letter)>0 BEGIN
        SET @Letter=STUFF(@Letter,PATINDEX('%[^A-Z]%',@Letter),1,'')
    END
    RETURN @Letter
END
go


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章