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...