去掉字符串前后指定的字符串的SQL函數(shù)
如果前后分隔符號(hào)過(guò)多,計(jì)算就不夠準(zhǔn)確,下面為您介紹的SQL函數(shù)用來(lái)去掉字符串前后指定的字符串,供您參考,希望對(duì)您學(xué)習(xí)SQL函數(shù)使用有所啟迪。
去掉前導(dǎo)字符串
CREATE FUNCTION Ltrimstring
(@string NVARCHAR(4000),--原始字符串
@trimStr NVARCHAR(50))--要去掉的前導(dǎo)字符串
RETURNS NVARCHAR(4000)
AS
BEGIN
set @string =isnull(@string ,'')--2010.05.14更改
--當(dāng)原始字符串長(zhǎng)度>0就檢查前導(dǎo)字符串是否出現(xiàn)在原始字符串前面
WHILE (Len(@string) > 0)
BEGIN
IF LEFT(@string,Len(@trimStr)) = @trimStr
BEGIN
--如果出現(xiàn)了前導(dǎo)字符串就將忽略前導(dǎo)字符串,從字符串尾部開(kāi)始截取原始字符串,長(zhǎng)度為原始字符串的長(zhǎng)度-前導(dǎo)字符串的長(zhǎng)度
SET @string = RIGHT(@string,Len(@string) - Len(@trimStr))
END
ELSE
--如果原始字符串前面沒(méi)有出現(xiàn)相匹配的前導(dǎo)字符串則中斷循環(huán)
BREAK
END
RETURN @string
END
GO#p#
去掉尾部字符串
CREATE FUNCTION Rtrimstring
(@string NVARCHAR(4000),
@trimStr NVARCHAR(50))
RETURNS NVARCHAR(4000)
AS
BEGIN
set @string =isnull(@string ,'')--2010.05.14更改
WHILE (Len(@string) > 0)
BEGIN
IF RIGHT(@string,Len(@trimStr)) = @trimStr
BEGIN
--與去掉前導(dǎo)字符串函數(shù)正好相反,截取的時(shí)候是從左側(cè)截取,從而忽略尾部的匹配字符串
SET @string = LEFT(@string,Len(@string) - Len(@trimStr))
END
ELSE
BREAK
END
RETURN @string
END#p#
--去掉首尾指定的字符串--2010.05.14更改
create function TrimString (@string NVARCHAR(4000),--原始字符串
@trimStr NVARCHAR(50))--要去掉的前導(dǎo)字符串
RETURNS NVARCHAR(4000)
AS
BEGIN
set @string=isnull( @string,'');
--當(dāng)原始字符串長(zhǎng)度>0就檢查前導(dǎo)字符串是否出現(xiàn)在原始字符串前面
if (Len(@string) > 0)
BEGIN
set @string=dbo.rtrimstring( dbo.ltrimstring(@string,@trimstr),@trimstr)
END
RETURN @string
END
這2個(gè)函數(shù)只能去掉前導(dǎo)或尾部字符串,不能去掉中間匹配的字符串
如 ',,,我再,,,測(cè)試,,,',如果選擇去掉前后‘,,,’,則結(jié)果是‘我再,,,測(cè)試’,因?yàn)槿サ糁虚g的可以用Replace()來(lái)實(shí)現(xiàn)
使用演示
declare @string nvarchar(500),@trimString nvarchar(500)
select @string=',,,我再,,,測(cè)試,,,',@trimString=','
print dbo.LTrimString(@string,@trimString)
print dbo.RTrimString(@string,@trimString)
print dbo.LTrimString(dbo.RTrimString(@string,@trimString),@trimString)
--依次輸出
我再,,,測(cè)試,,,
,,,我再,,,測(cè)試
我再,,,測(cè)試
【編輯推薦】
輸入小寫(xiě)金額,輸出大寫(xiě)金額的SQL函數(shù)寫(xiě)法