go--建立函式(第一版)
create
function get_orderstr(@str
varchar(8000
))returns
varchar(8000)as
begin
set@str
=rtrim(@str
)
declare
@tbtable(s varchar(1),a int
)
while
len(@str)>
0begin
insert
into
@tbselect
left(@str,1),ascii(left(@str,1
))
set@str
=right(@str,len(@str)-1)
enddeclare
@sql
varchar(8000
)
select
@sql
=isnull(@sql
+'','')+s from
@tborderbya
return
isnull(@sql,''
)end
--測試示例
if(dbo.get_orderstr('
abc')=dbo.get_orderstr('
acb'
))print'相同
'else
print'不同
'--執行結果
/*相同
*/--
第二版/*
* 功能:不按先後順序比較字串序列是否相同 *
* 適用:sql server 2000 / sql server 2005 *
* 返回:相同不相同 *
* 描述:學習limpire(昨夜小樓)的方法後做乙個動態sql的*
*/go
--建立儲存過程(這個不是函式)
create
proc
sp_comparestring
@str1
varchar(100),
@str2
varchar(100),
@split
varchar(10),
@ret
intoutput
asbegin
declare
@len
int, @sub
varchar(100
)
if@str1
=@str2
return(1
)
iflen(@str1) <>
len(@str2) or
len(replace(@str1, @split, '')) <>
len(replace(@str2, @split, ''
))
begin
set@ret=0
return
endset
@str1='
select
'''+
replace(@str1,@split,'''
as col union all select
''')+
''''
set@str2='
select
'''+
replace(@str2,@split,'''
as col union all select
''')+
''''
declare
@snvarchar(4000
)
set@s='
if exists(select 1 from ('+
@str1+'
) a where not exists(select 1 from ('+
@str2+'
) b where a.col = b.col)
orexists(select 1 from ('+
@str2+'
) a where not exists(select 1 from ('+
@str1+'
) b where a.col = b.col)
))select @ret = 0
else
select @ret = 1
'exec sp_executesql @s,n'
@ret int output
',@ret
output
endgo
--測試示例
declare
@ret
intexec sp_comparestring '
a,b,c
', '
b,c,a
', '
,',@ret
outselect
@ret
exec sp_comparestring '
a,b,c
', '
b,c,c,a
', '
,',@ret
outselect
@ret
drop
proc
sp_comparestring go
--第三版
/** * * * * * * * * * * * * * * * * * * * * *
* 功能:不按先後順序比較字串序列是否相同*
* 適用:sql server 2000 / sql server 2005 *
* 返回:相同不相同 *
* * * * * * * * * * * * * * * * * * * * * *
*/--
建立函式
create
function
fn_comparestring
(
@str1
varchar(100
),
@str2
varchar(100
),
@split
varchar(10))
returns
bitas
begin
declare
@len
int, @sub
varchar(100
)
if@str1
=@str2
return(1
)
iflen(@str1) <>
len(@str2) or
len(replace(@str1, @split, '')) <>
len(replace(@str2, @split, '')) return(0
)
select
@len
=len(@split), @str1
=@split
+@str1
+@split, @str2
=@split
+@str2
+@split
while
charindex(@split, @str1, @len
+1) >
0begin
set@sub
=left(@str1, charindex(@split, @str1, @len
+1) +
@len-1
)
ifcharindex(@sub, @str2) =
0return(0
)
while
charindex(@sub, @str1) >
0set
@str1
=replace(@str1, @sub, ','
)
while
charindex(@sub, @str2) >
0set
@str2
=replace(@str2, @sub, ','
)
iflen(@str1)<>
len(@str2) return(0
)
endreturn(1
)end
go--
測試示例
select dbo.fn_comparestring('
a,b,c
', '
b,c,a
', ','
)select dbo.fn_comparestring('
a,b,c
', '
b,c,c,a
', ','
) --執行結果/*1
0*/
葉子函式分享五十 無序字元比較函式
go 建立函式 第一版 create function get orderstr str varchar 8000 returns varchar 8000 as begin set str rtrim str declare tb table s varchar 1 a int while len...
字串比較函式
stricmp wcsicmp mbsicmp stricmp l wcsicmp l mbsicmp l 執行不區分大小寫的字串比較 語法 int stricmp const char string1,const char string2 int wcsicmp const wchar t str...
php字串比較函式
比較兩個字串是否相等,最常見的方法就是使用 來判斷,至於它和 的區別,簡單來說就是前者強調 identical 型別也要求一樣 後者要求 equal 值相同就可以了,參考。或者使用strcmp來判斷,但是這個能夠告訴你兩個字串是否相等,但是無法告訴你在那裡不同。我的思路是單字串分割為乙個個字母 ch...