sql 按照符号拆分字符串实现拆分为多行?
如我有多行字段,两行格式为:第一行,Detail列:A=1/B=2&A=3/B=4&A=5/B=6Name列:张第二行,Detail列:A=1/B=3&A=2/B=4&A...
如我有多行字段,两行格式为:
第一行,Detail列:A=1/B=2&A=3/B=4&A=5/B=6 Name列:张
第二行,Detail列:A=1/B=3&A=2/B=4&A=3/B=5 Name列:王
现在想拆分为:
Name A B
张 1 2
张 3 4
张 5 6
王 1 3
王 2 4
王 3 5
想根据"/"和“&”拆分为多列,这种格式改如何实现拆分实现? 展开
第一行,Detail列:A=1/B=2&A=3/B=4&A=5/B=6 Name列:张
第二行,Detail列:A=1/B=3&A=2/B=4&A=3/B=5 Name列:王
现在想拆分为:
Name A B
张 1 2
张 3 4
张 5 6
王 1 3
王 2 4
王 3 5
想根据"/"和“&”拆分为多列,这种格式改如何实现拆分实现? 展开
4个回答
展开全部
首先,你是按什么规则拆? 我举个例子 你要按字段中的逗号拆开,假设字段名叫text--用charindex和substring这2个函数 select substring(text,1,charindex(',',text)-1) as [before], substring(text,charindex(',',text),len(text)) as [after] from table
追问
这个和我的要求差一点,我这是多行额,用一列中拆分数据为多行
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
拆出来,最终是为了在数据库insert使用吗?还是提供查询功能传递给前端使用?
如果是给前端使用,不用你处理,前端自己拆分处理是最好的方案。
如果是给数据库使用,要看你是mysql还是Oracle,不同数据库提供不同的函数处理
如果是给前端使用,不用你处理,前端自己拆分处理是最好的方案。
如果是给数据库使用,要看你是mysql还是Oracle,不同数据库提供不同的函数处理
追问
是sqlserver,拆分出来是做数据库视图使用,可以直接查询出结果
追答
要考量一下数据量大小
1、大数据量的,建议落地成新表。
2、小数据量的,使用函数/存储过程,返回你的结果集。
后台代码处理这个分分钟写完,使用视图的话,要写的太复杂了,后期维护是风险。
尝试了一下,还是太麻烦了:
Select 'SELECT''' + REPLACE(DETAILS,'&',''',NAME UNION ALL SELECT ''') + ''',NAME' AS SQL_TMP
from (SELECT 'A=1/B=2&A=3/B=4&A=5/B=6' AS DETAILS,'张' AS NAME
UNION ALL
SELECT 'A=1/B=3&A=2/B=4&A=3/B=5' AS DETAILS,'王' AS NAME) A;
SQL_TMP结果:
SELECT 'A=1/B=2',NAME
UNION ALL
SELECT 'A=3/B=4',NAME
UNION ALL
SELECT 'A=5/B=6',NAME
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
用substr
只是纠结麻烦
先把值提取出来之后,按照想要的格式插入到新表中,就可以了
只是纠结麻烦
先把值提取出来之后,按照想要的格式插入到新表中,就可以了
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询