近來(lái)在開(kāi)發(fā)一個(gè)項(xiàng)目時(shí),一包含數(shù)字的字符串,需要取出中間的數(shù)字部分進(jìn)行排序.經(jīng)過(guò)baidu搜索。并結(jié)合自己項(xiàng)目的需求,編寫了一個(gè)自定義的SQL函數(shù)用供項(xiàng)目中使用。

/* ***** 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 , '' ) -- 刪掉一個(gè)非數(shù)字的字符,循環(huán)結(jié)束,剩余的為數(shù)字部分 END RETURN CONVERT ( bigint , @No ) END
項(xiàng)目中的問(wèn)題解決后,反過(guò)來(lái)思考了一下如果只取出字串中的字符部分,又如何處理呢。經(jīng)過(guò)修改,修改如下,生成另一個(gè)SQL自定義函數(shù)。

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 , '' ) -- 刪掉一個(gè)非數(shù)字的字符,循環(huán)結(jié)束,剩余的為數(shù)字部分 END RETURN CONVERT ( varchar ( 100 ), @No ) END -- select dbo.F_GetChar('wwww23')
以上調(diào)用自定義函數(shù)時(shí)都必須前面帶 dbo.
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

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