用sqlserver将表中某一个字段按空格截取

User表UserIDNameAgeMedal100001张三20万元户实名认证宠物达人100002李四30实名认证现数据库中已经存在User表想要添加一个Medal表如... User表
UserID Name Age Medal
100001 张三 20 万元户 实名认证 宠物达人
100002 李四 30 实名认证

现数据库中已经存在User表
想要添加一个Medal表如下
Medal表
ID TaoBaoID Medal
1 100001 万元户
2 100001 实名认证
3 100001 宠物达人
4 100002 实名认证
用sqlserver实现 应该怎样做?
展开
 我来答
小狂中E
2013-12-10 · TA获得超过1418个赞
知道大有可为答主
回答量:1514
采纳率:66%
帮助的人:1034万
展开全部
with [user](userid,name,age,medal) as
( select 100001, '张三', 20, '万元户 实名认证 宠物达人'
union all select 100002, '李四', 30, '实名认证')
,
t as (select userid,cast(null as varchar(100)) medal,medal s from [user]
union all
select userid,
cast(case when charindex(' ', s)>0 then left(s, charindex(' ',s)-1) else s end as varchar(100)),
case when charindex(' ', s)>0 then right(s, len(s)-charindex(' ',s)) end
from t
where s is not null
)
select userid,medal from t where medal is not null order by userid
追问
好吧 我没有看懂  但是我已经解决了 现在 我又有一个新问题  
类似select * from User 这个结果是将User表中的张三和李四都读出来
现在我想 先读取张三的 处理张三的数据 然后再读取李四的 最好用循环来读取
换言之就是 有序的从头到尾 一条一条的将数据库中的数据读取出来
追答
没看懂?执行一下不就知道是否符合要求了
先张三后读李四,那你只好select * from user order by ....,order by的规则如果不是按name的字符串顺序而是事先确定好的,那就先用另一个表定义次序,这个表的结构如(序号,name),然后把各name按序号插进来,然后再跟[user]表做连接,并order by 序号
百度网友727fa77
2013-12-10 · 超过38用户采纳过TA的回答
知道小有建树答主
回答量:98
采纳率:0%
帮助的人:53.6万
展开全部
create table Medal(

ID int IDENTITY(1,1),
TaoBaoID 类型,

Medal varchar(100),

foreignkey TaoBaoID references User(TaoBaoID ),

foreignkey Medal references User(Medal )
)
更多追问追答
追问
不是建表 是用代码实现 表已经建好了 是将User表中的UserID和Medal单独拿出来建张表 建成之后是Medal表的样子
追答
insert into Medal(TaoBaoID,Medal) select (UserID, Medal) from Users
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式