在SQL中取出字符串中數字部分或在SQL中取出字符部分


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
View Code

 

  •   項目中的問題解決后,反過來思考了一下如果只取出字串中的字符部分,又如何處理呢。經過修改,修改如下,生成另一個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')
View Code

  

以上調用自定義函數時都必須前面帶dbo.


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM