标签:sqlserver 位置 一个 n+1 lower 空格 sele ret rev
去除输入字符串中的中文
create function fun_del_chinese
(@col nvarchar(max))
returns nvarchar(max)
AS
begin
declare @returnchar nvarchar(max),@len int
select @returnchar=‘‘,@len=1
while(@len<=len(@col))
begin
if(ASCII(substring(@col,@len,1))<122)
set @returnchar=@returnchar+substring(@col,@len,1)
set @len=@len+1
end
return @returnchar
end
go
调用:
update 表名 set 字段名=dbo.fun_del_chinese(字段名) from 表名
去掉开头特殊字符:
CREATE FUNCTION dbo.trimChar(@char nvarchar(max),@str nvarchar(max))
RETURNS nvarchar(max)
AS
BEGIN
RETURN(SELECT STUFF
(REVERSE(
STUFF(REVERSE(@str),1,
PATINDEX(‘%[^‘+@char+‘]%‘,REVERSE(@str))-1,‘‘)
)
,1,PATINDEX(‘%[^‘+@char+‘]%‘,@str)-1,‘‘)
);
END
GO
调用:
update 表名 set 字段名=dbo.trimChar(‘特殊符号‘,字段名)
调取两个相同特殊字符中间的内容:
Create function f_getStr
(@str nvarchar(max),--字符串
@split nvarchar(max),--分隔符
@begin int,--第几次出现
@end int--第几次出现
) returns varchar(1000)
as
begin
declare @str1 nvarchar(max)
declare @str2 nvarchar(max)
declare @POSITION1 int
declare @POSITION2 int
declare @char nvarchar(max)
declare @i int
set @str1=@str
set @str2=@str
set @i=0
while @i<@begin
begin
if charindex(@split,@str1)>0
set @str1=right(@str1,len(@str1)-charindex(@split,@str1))
set @i=@i+1
end
select @POSITION1=len(@str)-len(@str1)--@POSITION1位置1
set @i=0
while @i<@end
begin
if charindex(@split,@str2)>0
set @str2=right(@str2,len(@str2)-charindex(@split,@str2))
set @i=@i+1
end
select @POSITION2=len(@str)-len(@str2)--@POSITION2位置2
if @POSITION1>@POSITION2
set @char=substring(@str,@POSITION2+1,@POSITION1-@POSITION2-1)
else
set @char=substring(@str,@POSITION1+1,@POSITION2-@POSITION1-1)
return @char
end
调用:
select dbo.f_getStr(za,‘/‘,2,3) as string from xa
标签:sqlserver 位置 一个 n+1 lower 空格 sele ret rev
原文地址:https://www.cnblogs.com/tianranbai/p/11270723.html