有问题~~~求帮忙!!!

zjh42 2006-10-25 05:22:27
aa='abc 12345-vv4 3434343'
bb='abcde 234-wer23 3434343'


我想取第二个空格前的信息请大家帮忙!!!就是不要第二个空格后的信息!!!
aa='abc 12345-vv4'
bb='abcde 234-wer23'
...全文
202 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
cfanliang 2006-11-16
  • 打赏
  • 举报
回复
如果你能保证第二个空格之前一定只有一个‘-’,那么可以这样:

declare @aa varchar(30)
set @aa='abc 12345-vv4 3434343'
select SUBSTRING(@aa,1,charindex(' ',substring(@aa,charindex('-',@aa),len(@aa)-charindex('-',@aa))) -- '-vv4 3434343'中空格的位置
+ charindex('-',@aa)-1)
点点星灯 2006-10-25
  • 打赏
  • 举报
回复

declare @tab table(str1 varchar(500))

insert @tab values('abc 12345-vv4 3434343')
insert @tab values('abcde 234-wer23 3434343')

--先反转字符串
select REVERSE(str1) from @tab
--取得空格的位置
select charindex(' ',REVERSE(str1)) from @tab
--截取第而个空格之前的数据
select substring(REVERSE(str1),charindex(' ',REVERSE(str1))+1,len(str1)-charindex(' ',REVERSE(str1))) from @tab
--在反转回来
select REVERSE(substring(REVERSE(str1),charindex(' ',REVERSE(str1))+1,len(str1)-charindex(' ',REVERSE(str1)))) from @tab


--楼上说的没错,仅仅只适合两个空格的情况
子陌红尘 2006-10-25
  • 打赏
  • 举报
回复
楼上的方法适用于处理字段中仅包含两个空格的情况。
点点星灯 2006-10-25
  • 打赏
  • 举报
回复


declare @tab table(str1 varchar(500))

insert @tab values('abc 12345-vv4 3434343')
insert @tab values('abcde 234-wer23 3434343')


select REVERSE(str1) from @tab
select charindex(' ',REVERSE(str1)) from @tab

select substring(REVERSE(str1),charindex(' ',REVERSE(str1))+1,len(str1)-charindex(' ',REVERSE(str1))) from @tab

select REVERSE(substring(REVERSE(str1),charindex(' ',REVERSE(str1))+1,len(str1)-charindex(' ',REVERSE(str1)))) from @tab

子陌红尘 2006-10-25
  • 打赏
  • 举报
回复
只有两个空格还是有多个?

22,210

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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