在SQL中取出字符串中數字部分或在SQL中取出字符部分
編寫人:CC阿爸
2013-10-18
- 近來在開發一個項目時,一包含數字的字符串,需要取出中間的數字部分進行排序.經過baidu搜索。並結合自己項目的需求,編寫了一個自定義的SQL函數用供項目中使用。

/****** Object: UserDefinedFunction [dbo].[F_Get_No] Script Date: 10/18/2013 22:03:13 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO create function [dbo].[F_Get_No] ( @No varchar(100) ) RETURNS bigint AS BEGIN WHILE PATINDEX('%[^0-9]%',@No)>0 BEGIN SET @No=STUFF(@No,PATINDEX('%[^0-9]%',@No),1,'') --刪掉一個非數字的字符,循環結束,剩余的為數字部分 END RETURN CONVERT(bigint,@No) END
- 項目中的問題解決后,反過來思考了一下如果只取出字串中的字符部分,又如何處理呢。經過修改,修改如下,生成另一個SQL自定義函數

create function [dbo].[F_GetChar] ( @No varchar(100) ) RETURNS varchar(100) AS BEGIN WHILE PATINDEX('%[^A-Za-z]%',@No)>0 BEGIN SET @No=STUFF(@No,PATINDEX('%[^A-Za-z]%',@No),1,'') --刪掉一個非數字的字符,循環結束,剩余的為數字部分 END RETURN CONVERT(varchar(100),@No) END --select dbo.F_GetChar('wwww23')
以上調用自定義函數時都必須前面帶dbo.