近來在開發一個項目時,一包含數字的字符串,需要取出中間的數字部分進行排序.經過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.
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
