SQL 從字符串中提取數字

 

一基礎使用:

--聲明一個nvarchar類型的變量並賦值
declare @Name nvarchar(50)
set @Name='我正在123學.習22.SQL中11.的一些函數'

--patindex函數返回所查內容在字符串中第一次出現的內容
print patindex('%在%',@Name) --此處會返回3

print patindex('%[0-9]%',@Name) --此處會返回4


--STUFF函數刪除指定長度的字符在指定的起始點插入另一組字符
--格式 stuff(parameter,startindex,length,insertstr)
--個人意思:是將parameter中索引從startindex開始長爲length的字符串替換爲insertstr
print stuff(@Name,1,1,'被插') --此處會輸出:被插正在123學.習22.SQL中11.的一些函數

print stuff(@Name,3,4,'被插') --此處會輸出:我正被插學.習22.SQL中11.的一些函數

--只提取數字
while patindex('%[^0-9]%',@Name)>0
begin
set @Name=stuff(@Name,patindex('%[^0-9]%',@Name),1,'')
end

print @Name --此處會輸出1232211

 

 

二、封裝方法

create function dbo.GetNoFromStr(@str nvarchar(100))
  returns bigint
as
begin
   while patindex('%[^0-9]%',@str)>0
  begin
  set @str=stuff(@str,patindex('%[^0-9]%',@str),1,'')
  end
  return convert(bigint,@str)
end

 

//調用方式

select dbo.GetNoFromStr('25號')  as  result   //取出數字25

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