sql如何自动剔除指定字段末尾指定范围的字母,然后输出?

marklr 2011-07-06 11:18:30

例如 有如下字段,如果末尾的字母是A-G,则自动剔除该字母后输出,反之原封不动输出


原始数据:
id name
1 12-32A
2 32-22F
3 1-32K


希望的输出结果是:

id name
1 12-32
2 32-22
3 1-32K
...全文
177 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
feixianxxx 2011-07-06
  • 打赏
  • 举报
回复
为什么 我上班后 就没时间抢的...你们都有
--小F-- 2011-07-06
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 marklr 的回复:]
原来 like 可以这样用,如果我想指定的是 A、F 和G三个字母,那么是不是这样写 like '[A,F,G]' ?
[/Quote]
right(name,1) in('A','F','G')
--小F-- 2011-07-06
  • 打赏
  • 举报
回复
select 
case when right(name,1) like '[A-G]' then replace(name,len(name)-1,1,'') end
from
tb
marklr 2011-07-06
  • 打赏
  • 举报
回复
原来 like 可以这样用,如果我想指定的是 A、F 和G三个字母,那么是不是这样写 like '[A,F,G]' ?
Mr_Nice 2011-07-06
  • 打赏
  • 举报
回复
if object_id('[TB]') is not null drop table [TB]
go
create table [TB] (id int,name nvarchar(12))
insert into [TB]
select 1,'12-32A' union all
select 2,'32-22F' union all
select 3,'1-32K'

select * from [TB]


SELECT id,CASE WHEN RIGHT(NAME,1) LIKE '[A-G]' THEN LEFT(name,LEN(NAME)-1) ELSE NAME END AS name
FROM dbo.TB


/*
id name
1 12-32
2 32-22
3 1-32K*/
-晴天 2011-07-06
  • 打赏
  • 举报
回复
CREATE TABLE tb(id int,name varchar(10))
insert into tb select 1,'12-32A'
insert into tb select 2,'32-22F'
insert into tb select 3,'1-32K'
go
select id,case when right(name,1) like '[A-G]' then left(name,len(name)-1) else name end name
from tb
/*
id name
----------- ----------
1 12-32
2 32-22
3 1-32K

(3 行受影响)

*/
go
drop table tb

叶子 2011-07-06
  • 打赏
  • 举报
回复

declare @t table (id int,name varchar(6))
insert into @t
select 1,'12-32A' union all
select 2,'32-22F' union all
select 3,'1-32K'

select id,case when right(name,1) between 'A' and 'G' then left(name,len(name)-1)
else name end as name from @t
/*
id name
----------- ------
1 12-32
2 32-22
3 1-32K
*/
AcHerat 元老 2011-07-06
  • 打赏
  • 举报
回复

select id,(case when right(name,1) like '[A-G]' then replace(name,len(name)-1,1,'')
else name end) name
from tb
bancxc 2011-07-06
  • 打赏
  • 举报
回复
case when right(name,1) like '[A-C]' then replace(name,len(name)-1,1,'') end
ly745455 2011-07-06
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 jimmyzeng2008 的回复:]
引用 6 楼 marklr 的回复:
原来 like 可以这样用,如果我想指定的是 A、F 和G三个字母,那么是不是这样写 like '[A,F,G]' ?


like '[A,F,G]'或in('A','F','G')都可以。
[/Quote]
+
jimmyzeng2008 2011-07-06
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 marklr 的回复:]
原来 like 可以这样用,如果我想指定的是 A、F 和G三个字母,那么是不是这样写 like '[A,F,G]' ?
[/Quote]

like '[A,F,G]'或in('A','F','G')都可以。

34,873

社区成员

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

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