1.SQL中截取中文字符("吖-咗"这个区间几乎能包括所有的汉字)

MSSQL中取字符中的汉字或双字节字符--A.
MSSQL中取字符中的汉字或双字节字符
create function get_china(@s varchar(50))
MSSQL中取字符中的汉字或双字节字符
returns varchar(50)
MSSQL中取字符中的汉字或双字节字符
as
MSSQL中取字符中的汉字或双字节字符
begin
MSSQL中取字符中的汉字或双字节字符
declare @i int
MSSQL中取字符中的汉字或双字节字符
set @i=1
MSSQL中取字符中的汉字或双字节字符
while patindex('%[^吖-咗]%',@s> 0 and @i<=len(@s)
MSSQL中取字符中的汉字或双字节字符
begin
MSSQL中取字符中的汉字或双字节字符
if substring(@s,@i,1not like '%[吖-咗]%'
MSSQL中取字符中的汉字或双字节字符
set @s=stuff(@s,@i,1,'')
MSSQL中取字符中的汉字或双字节字符
else
MSSQL中取字符中的汉字或双字节字符
set @i=@i+1
MSSQL中取字符中的汉字或双字节字符
end
MSSQL中取字符中的汉字或双字节字符
return @s
MSSQL中取字符中的汉字或双字节字符
end
MSSQL中取字符中的汉字或双字节字符
MSSQL中取字符中的汉字或双字节字符
select dbo.get_china('但是111中国aaa人test我***是啊kao多多うェ')
MSSQL中取字符中的汉字或双字节字符
drop function dbo.get_china
MSSQL中取字符中的汉字或双字节字符
MSSQL中取字符中的汉字或双字节字符
MSSQL中取字符中的汉字或双字节字符
--B.
MSSQL中取字符中的汉字或双字节字符
create function getnewstr
MSSQL中取字符中的汉字或双字节字符(
@oldstr varchar(100))
MSSQL中取字符中的汉字或双字节字符
returns varchar(100)
MSSQL中取字符中的汉字或双字节字符
as
MSSQL中取字符中的汉字或双字节字符
begin
MSSQL中取字符中的汉字或双字节字符
declare @i int
MSSQL中取字符中的汉字或双字节字符
set @i = 1
MSSQL中取字符中的汉字或双字节字符
while @i <= len(@oldstr)
MSSQL中取字符中的汉字或双字节字符
if substring(@oldstr@i1like('[^吖-座]')
MSSQL中取字符中的汉字或双字节字符
set @oldstr = replace(@oldstrsubstring(@oldstr@i1), '')
MSSQL中取字符中的汉字或双字节字符
else
MSSQL中取字符中的汉字或双字节字符
set @i = @i +1
MSSQL中取字符中的汉字或双字节字符
return @oldstr
MSSQL中取字符中的汉字或双字节字符
end
MSSQL中取字符中的汉字或双字节字符
go
MSSQL中取字符中的汉字或双字节字符
MSSQL中取字符中的汉字或双字节字符
select result = dbo.getnewstr('但是111中国aaa人test我***是啊kao多多うェ')
MSSQL中取字符中的汉字或双字节字符
drop function dbo.getnewstr

2.字符中无全角,但是还包含双字节字符,比如汉字,日文,汉文

MSSQL中取字符中的汉字或双字节字符--A.
MSSQL中取字符中的汉字或双字节字符
declare @s varchar(100),@i int,@s2 varchar(100)
MSSQL中取字符中的汉字或双字节字符
set @s='但是111中国aaa人test我***是啊kao多多うェ'
MSSQL中取字符中的汉字或双字节字符
set @i=1
MSSQL中取字符中的汉字或双字节字符
while  @i<=len(@s)
MSSQL中取字符中的汉字或双字节字符
begin
MSSQL中取字符中的汉字或双字节字符    
if ascII(substring(@s,@i,1)) between 133  and 223
MSSQL中取字符中的汉字或双字节字符       
set @i=@i+1 
MSSQL中取字符中的汉字或双字节字符    
else
MSSQL中取字符中的汉字或双字节字符    
begin
MSSQL中取字符中的汉字或双字节字符       
set @s = stuff(@s,@i,1,'')
MSSQL中取字符中的汉字或双字节字符       
set @i = 1
MSSQL中取字符中的汉字或双字节字符    
end
MSSQL中取字符中的汉字或双字节字符
end
MSSQL中取字符中的汉字或双字节字符
select @s
MSSQL中取字符中的汉字或双字节字符
MSSQL中取字符中的汉字或双字节字符
--B.
MSSQL中取字符中的汉字或双字节字符
DECLARE @s VARCHAR(100),@s1 VARCHAR(100)
MSSQL中取字符中的汉字或双字节字符
SELECT @s='但是111中国aaa人test我***是啊kao多多うェ',@s1=''
MSSQL中取字符中的汉字或双字节字符
WHILE LEN(@s)>0
MSSQL中取字符中的汉字或双字节字符    
SELECT @s1=CASE WHEN DATALENGTH(RIGHT(@s,1))=2 THEN RIGHT(@s,1ELSE '' END + @s1,@s=LEFT(@s,LEN(@s)-1)
MSSQL中取字符中的汉字或双字节字符
SELECT @s1

--来自CSDN

相关文章:

  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-01-28
  • 2022-12-23
  • 2021-07-17
  • 2022-12-23
  • 2022-12-23
猜你喜欢
  • 2021-10-12
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-09-20
  • 2022-12-23
  • 2022-12-23
相关资源
相似解决方案