求一個函數

Liyingyue_FFS 2008-11-24 09:15:11
求一個函數,去掉字符串中所有的漢字,比如
select func('MOT-L6g锟匡靠锟匡靠锟匡靠锟匡') --MOT-L6g

...全文
144 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
super_iven 2008-11-24
  • 打赏
  • 举报
回复
UP
lonlyhawk 2008-11-24
  • 打赏
  • 举报
回复
declare @str varchar(100),@i int
select @str='MOT-L6g锟匡靠锟匡靠锟匡靠锟匡',@i=1
while @i<=len(@str)
begin
if len(substring(@str,@i,1))<>datalength(substring(@str,@i,1))
begin
set @str=replace(@str,substring(@str,@i,1),' ')
end
set @i=@i+1
end
set @str=replace(@str,' ','')
print @str
等不到来世 2008-11-24
  • 打赏
  • 举报
回复
if object_id('fn_RemoveCN') is not null drop function fn_RemoveCN
go
create function fn_RemoveCN(@s nvarchar(100))
returns nvarchar(100)
as
BEGIN
while patindex('%[吖-咗]%',@s)>0
BEGIN
set @s=stuff(@s,patindex('%[吖-咗]%',@s),1,'')
END
return @s
END
go

select dbo.fn_RemoveCN('MOT-L6g吖锟匡靠锟匡靠锟匡靠锟匡')
/*--------------------------------
MOT-L6g
(1 行受影响)
*/
Liyingyue_FFS 2008-11-24
  • 打赏
  • 举报
回复
唉~~sqlserver下測試成功,iq下測試失敗。
hyde100 2008-11-24
  • 打赏
  • 举报
回复
patindex
dawugui 2008-11-24
  • 打赏
  • 举报
回复
create function get_str(@str varchar(100)) returns varchar(100)
as
begin
declare @rtn varchar(100)
set @rtn = left(@str , patindex(N'%[吖-咗]%' collate Chinese_PRC_CI_AS, @str) - 1)
return @rtn
end
go

select dbo.get_str('MOT-L6g锟匡靠锟匡靠锟匡靠锟匡') as result

drop function dbo.get_str
/*
result
----------------------------------------------------------------------------------------------------
MOT-L6g

(所影响的行数为 1 行)

*/
dawugui 2008-11-24
  • 打赏
  • 举报
回复
declare @a varchar(100)
set @a =N'MOT-L6g锟匡靠锟匡靠锟匡靠锟匡'
select left(@a , patindex(N'%[吖-咗]%' collate Chinese_PRC_CI_AS, @a) - 1)

/*

----------------------------------------------------------------------------------------------------
MOT-L6g

(所影响的行数为 1 行)
*/
rucypli 2008-11-24
  • 打赏
  • 举报
回复
每个字符用datalength测字节数

如果 字节数>2 则去掉

否则保留
chuifengde 2008-11-24
  • 打赏
  • 举报
回复

create function func(@x nvarchar(100))
returns nvarchar(100)
as
BEGIN
while patindex('%[啊-咗]%',@x)>0
BEGIN
set @x=stuff(@x,patindex('%[啊-咗]%',@x),1,'')
END
return @x
END
go
select dbo.func('MOT-L6g锟匡靠锟匡靠锟匡靠锟匡')
--result
/*--------------------------------
MOT-L6g
(所影响的行数为 1 行)
*/

34,590

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧