一个简单的视图去难以实现,求助

lanjue 家里蹲大学 2006-03-15 05:19:15
表一,有列a
a有值(以|间隔) x|x,1|xx,3|x,299|xxxxx,jkjkk|y
要求结果视图: x|x|xx|x|xxxxx|y
映射条件应该很清楚,呵,大家帮忙想想办法
...全文
66 点赞 收藏 5
写回复
5 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
lanjue 2006-03-20
虽然自己也早已想到用case 解决,但还是要非常感谢!热情才是生活之本
回复
huailairen 2006-03-15
字段2
-------------------- -----------
xx 20
xxxxx 40
x 10

(所影响的行数为 3 行)
回复
huailairen 2006-03-15


select * from tb
drop table tb
create table x(字段1 varchar(20) , 字段2 int)

insert into x values('xx,1', 20)
insert into x values('xxxxx,jkjkk', 40)
insert into x values('x', 10)


select substring(字段1,1,(case charindex(',',字段1) when 0 then len(字段1) else charindex(',',字段1)-1 end)) , 字段2
from x
回复
lanjue 2006-03-15
上面可能理解错误,有X表

字段1 字段2
x 10
xx,1 20
x,2 30
xxxxx,jkjkk 40
要求的效果(视图)
字段1 字段2
x 40
xx 20
xxxxx 40


回复
huailairen 2006-03-15

create table tb(a varchar(8000))
insert into tb values('x|x,1|xx,3|x,299|')

create function get_str(@s varchar(8000))
returns varchar(8000)
as
begin
select @s=replace(@s,'0','')
select @s=replace(@s,'1','')
select @s=replace(@s,'2','')
select @s=replace(@s,'3','')
select @s=replace(@s,'4','')
select @s=replace(@s,'5','')
select @s=replace(@s,'6','')
select @s=replace(@s,'7','')
select @s=replace(@s,'8','')
select @s=replace(@s,'9','')
select @s=replace(@s,',','')
return @s
end
create view abc
as
select rlt=dbo.get_str(a)
from tb

回复
相关推荐
发帖
疑难问题
创建于2007-09-28

2.1w+

社区成员

MS-SQL Server 疑难问题
申请成为版主
帖子事件
创建了帖子
2006-03-15 05:19
社区公告
暂无公告