一基礎使用:
--聲明一個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