MS-sq字段截取

yksyuan 2012-05-08 07:21:52

表中有这么个字段
Name
-----------------------------
aa
aa[1]
aa[2]
aa(1)
bb
cc
cc[1]
我想 要的效果
aa 4
bb 1
cc 2



不知道表达清楚没有。就是凡是有()和[]的 都当做没有处理

不知道怎么写,请大家帮我下
...全文
76 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
yksyuan 2012-05-08
  • 打赏
  • 举报
回复
呃,谢谢。
TravyLee
(跟小F姐姐混)


我看下啊。。。
yksyuan 2012-05-08
  • 打赏
  • 举报
回复
对了。谢谢josy(百年树人)
结贴了。。。


哎,我太菜了。在去好好研究下 。。。。


万分感谢
  • 打赏
  • 举报
回复

go
create table #s(
col varchar(10)
)
insert #s
select 'B3' union all
select 'C1' union all
select 'D\4' union all
select '4MD' union all
select 'AR/12BD'
;with t
as(
select substring(col+' ',patindex( '%[0-9]% ',col+' '),len(col+' ')) as col1
from #s
)
select left(col1+' ',patindex( '%[^0-9]% ',col1+' ')-1) as col from t
/*
col
3
1
4
12
4
*/


如果是无规则字符串中的截取数字请参考以上方法
yksyuan 2012-05-08
  • 打赏
  • 举报
回复
谢谢。josy

我先消化下。。。。
百年树人 2012-05-08
  • 打赏
  • 举报
回复
if object_id('[tb]') is not null drop table [tb]
go
create table [tb]([Name] varchar(5))
insert [tb]
select 'aa' union all
select 'aa[1]' union all
select 'aa[2]' union all
select 'aa(1)' union all
select 'bb' union all
select 'cc' union all
select 'cc[1]'
go


select left(name,charindex('[',replace(name,'(','[')+'[')-1) as name,count(1) as cnt
from tb
group by left(name,charindex('[',replace(name,'(','[')+'[')-1)

/**
name cnt
----- -----------
aa 4
bb 1
cc 2

(3 行受影响)
**/

34,575

社区成员

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

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