截取字符~~~紧急求助???

llh6795 2007-07-12 05:04:11
表ZD

BH ————字段
01-1
02M
03毛-A

如果碰到汉字就去出除

BH
01-1
02M
03

用SQL可以实现吗?
...全文
197 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
gezhicyz 2007-07-13
  • 打赏
  • 举报
回复

谢谢了高手的帮助,终于调试好了,先6着让和我一样的菜鸟学习学习,明天揭贴:)))


==================================
Thanks you !
llh6795 2007-07-12
  • 打赏
  • 举报
回复
谢谢了高手的帮助,终于调试好了,先6着让和我一样的菜鸟学习学习,明天揭贴:)))
wolf5200 2007-07-12
  • 打赏
  • 举报
回复
学习了!有星星的地方就是能学到新东西!再学!
llh6795 2007-07-12
  • 打赏
  • 举报
回复
非常感谢楼上的朋友们
starsong 2007-07-12
  • 打赏
  • 举报
回复
星星就是不一样,
bill024 2007-07-12
  • 打赏
  • 举报
回复
create table test(BH varchar(50))
insert test select '01-1'
union all select '02M'
union all select '03毛-A'
union all select 'CI31.7I下沖(R400)'
union all select 'CI45下沖(R500)樣品模'
union all select 'CI6.6/9.1ACT下沖(R200)'

select BH=case when PATINDEX('%[^0-9a-zA-Z./-]%', BH)>0 then
left(BH,PATINDEX('%[^0-9a-zA-Z./-]%', BH)-1) else BH end from test

drop table test

BH
--------------------------------------------------
01-1
02M
03
CI31.7I
CI45
CI6.6/9.1ACT
chuifengde 2007-07-12
  • 打赏
  • 举报
回复
create table xyz(bh nvarchar(100))
insert xyz select '01-1'
union all select '02M--大家好'
union all select '03毛-A'

go
create function fun_xyz(@v nvarchar(100))
returns nvarchar(100)
as
begin
declare @i int,@x nvarchar(100)
set @x=''
set @i=1
while @i<=len(@v)
begin
select @x=@x+case when datalength(cast(substring(@v,@i,1) as varchar) collate Chinese_PRC_BIN)=2 then '' else substring(@v,@i,1) end
set @i=@i+1
end
return @x
end
go
select dbo.fun_xyz(bh) from xyz
starsong 2007-07-12
  • 打赏
  • 举报
回复
我的想法是把每个字符取出来,比较asc码,如果是汉字就根据长度截断,跟楼上的一样
houyichong 2007-07-12
  • 打赏
  • 举报
回复
在公司电脑上没装mssql,不然给你写个函数就行了func
houyichong 2007-07-12
  • 打赏
  • 举报
回复
可以
len函数
asc函数返回的acs码<0就认为是汉字,然后去掉

27,580

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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