葉子函式分享八 取出字串中的漢字 字母或是數字

2021-08-25 18:23:01 字數 3518 閱讀 1737

go

--建立函式(得到字串中的漢字)

create

function [dbo].[m_getchinese] (

@chinese nvarchar

(max))

returns

varchar

(100)as

begin

while

patindex

('%[^

吖-咗]%'

,@chinese)

> 0

begin

set @chinese =

stuff

(@chinese,

patindex

('%[^

吖-咗]%'

,@chinese),1,n''

);end

return @chinese

end go

--建立函式(得到字串中的字母)

create

function [dbo].[m_getstr](@maco varchar

(100))

returns

varchar

(max)as

begin

while

patindex

('%[^a-z]%'

,@maco)

> 0

begin

set @maco=

stuff

(@maco,

patindex

('%[^a-z]%'

,@maco),1,'')

endreturn @maco

end go

--建立函式(得到字串中的數字)

create

function [dbo].[m_getnumber] (

@mysql_one nvarchar

(200))

returns

varchar

(200)

begin

declare @mysql_two varchar

(200)

select @mysql_two=

substring

(@mysql_one,

patindex

('%[0-9.]%'

,@mysql_one),

patindex

('%[^0-9.]%'

,substring

(@mysql_one,

patindex

('%[0-9.]%'

,@mysql_one),

len(@mysql_one)-

patindex

('%[0-9.]%'

,@mysql_one)+1))-1)

return @mysql_two;

end

--測試

select

dbo.[m_getchinese](

'china2009

中國hrb4-1v')

select

dbo.[m_getstr](

'china2009

中國hrb4-1v')

select

dbo.[m_getnumber](

'china2009

中國hrb4-1v')

--執行結果 /*

----------- 中國

-----------

chinahrbv

-----------

2009 */

--說明一下

--上面這個取數字是可以取浮點型的

select

dbo.[m_getnumber] (

'欄位.456a

(aa)a'

)--正常

select

dbo.[m_getnumber] (

'chinese2.1day')--

正常 select

dbo.[m_getnumber] (

'name5.01from')--

正常 select

dbo.[m_getnumber] (

'9898address')--

正常 select

dbo.[m_getnumber] (

'aaaaaform2.3333')--

錯誤 --修正函式 go

/* 取出字串中間的數字(第二版)*/

create

function [dbo].[m_getnumberv2.0] (

@mysql_one nvarchar

(200))

returns

varchar

(200)

begin

declare @mysql_two varchar

(200)

declare @sql_one int

declare @sql_two int

select @sql_one=

patindex

('%[0-9.]%'

,@mysql_one)

select @sql_two=

patindex

('%[^0-9.]%'

,substring

(@mysql_one,

patindex

('%[0-9.]%'

,@mysql_one),

len(@mysql_one)-

patindex

('%[0-9.]%'

,@mysql_one)+1))

if @sql_two=0

begin

select @mysql_two=

substring

(@mysql_one,@sql_one,

len(@mysql_one)+1-@sql_one)

endelse

begin

select @mysql_two=

substring

(@mysql_one,@sql_one,@sql_two-1)

endreturn @mysql_two;

end

--測試示例

select

dbo.[m_getnumberv2.0] (

'欄位.456a

(aa)a'

)--正常

select

dbo.[m_getnumberv2.0] (

'chinese2.1day')--

正常 select

dbo.[m_getnumberv2.0] (

'name5.01from')--

正常 select

dbo.[m_getnumberv2.0] (

'9898address')--

正常 select

dbo.[m_getnumberv2.0] (

'aaaaaform2.3333')--

正常

葉子函式分享三十七 求字串中漢字的個數

一 分解字串法 首先建立這個函式 將字串分解 create function dbo splitchar str one nvarchar 100 returns result table col nvarchar 1 as begin declare number one int select n...

葉子函式分享五十六 對字串進行加密解密

create view v rand as select c unicode cast round rand 255,0 astinyint go create function f jmstr str varchar 8000 type bit returns varchar 8000 引數說明 ...

oracle中取出字串中的數字

在oracle中要擷取類似0.2g 2ml 10支 300盒中的容量,研究好久,終於完成了,寫了個function,供參考 create or replace function query colume material spec in varchar2 return number as f col...