导航
  • 主页
  • 基础类
  • 应用实例
  • 新技术前沿

大虾帮忙,在一个字段上取不是右边5位的数据,其中右边5位都是以S+四个数字组成。

路见不凡 2007-12-12 10:04:39
如题所示,
在一个字段上取不是右边5位的数据,其中右边5位都是以S+四个数字组成,

AL1024149S0148
AL1024349S0148
AL2254149S0146
AL3022448S0147
结果为
AL1024149
AL1024349
AL2254149
AL3022448
谢谢!
...全文
60 点赞 收藏 8
写回复
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
路见不凡 2007-12-12
字段长度都是大于5位,所以不用做判断。
回复
fcuandy 2007-12-12
好像理解错了.

楼主是要以最后五位以s打头4个数字结尾的作过滤,还是将字段显示时去掉后面的部分?
如果是前者,那就是我上一贴写的.如果是后者,那么稍改动.

select left(col,len(col)-5) from tb where right(col,5) like 's%'
select stuff(col,len(col)-5,5,'') from tb where charindex('s',right(col,5))=1

...
组合出来又有n种..
回复
tswkyo 2007-12-12
select substring(1,len(字段)-5)
如果要处理的字段中有null或则有长度小于5的加上case when 语句
有分给么?
回复
路见不凡 2007-12-12
谢谢潇洒老乌龟,正是右边5位不要。
回复
fcuandy 2007-12-12
select * from tb where right(col,5) not like 's%'
select * from tb where charindex('s',right(col,5))!=1
select * from tb where col not like '%s[0-9][0-9][0-9][0-9]'

...
写法太多,不一一写了.
回复
dawugui 2007-12-12

--如果确定右边五个不要,可直接如下
select left(col , len(col) - 5) from tb when len(col) > 5
回复
wzy_love_sly 2007-12-12
select left(@str,len(@str)-5)
回复
dawugui 2007-12-12
select left(col , charindex('s',col) - 1) from tb where charindex('s',col) > 0
回复
发动态
发帖子
MS-SQL Server
创建于2007-09-28

3.2w+

社区成员

MS-SQL Server相关内容讨论专区
申请成为版主
社区公告
暂无公告