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

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

AL1024149S0148
AL1024349S0148
AL2254149S0146
AL3022448S0147
结果为
AL1024149
AL1024349
AL2254149
AL3022448
谢谢!
...全文
131 8 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
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

34,838

社区成员

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

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