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

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
映射条件应该很清楚,呵,大家帮忙想想办法
...全文
84 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
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

22,207

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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