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
想根据"/"和“&”拆分为多列,这种格式改如何实现拆分实现?
展开
 我来答
fuyh16
2019-12-18 · TA获得超过222个赞
知道小有建树答主
回答量:462
采纳率:82%
帮助的人:118万
展开全部

这种问题,不应该用sql语句来处理,用后台代码把数据取回来,然后用代码处理,各种需要写法不一样,但是逻辑都是一样的,就是截取字符串,用js简单写一点。




验证一下

更多追问追答
追答
代码给屏蔽了

var s = "A=1/B=2&A=3/B=4&A=5/B=6";
var arr = s.split("&");
var result = [];
for(var i=0;i");

}
追问
我是想在sql中直接拆出来做视图使用,而不是在前台处理,前台处理我会的。
司马刀剑
高粉答主

2019-12-18 · 每个回答都超有意思的
知道顶级答主
回答量:4.6万
采纳率:93%
帮助的人:7448万
展开全部
首先,你是按什么规则拆? 我举个例子 你要按字段中的逗号拆开,假设字段名叫text--用charindex和substring这2个函数 select substring(text,1,charindex(',',text)-1) as [before], substring(text,charindex(',',text),len(text)) as [after] from table
追问
这个和我的要求差一点,我这是多行额,用一列中拆分数据为多行
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
wyh7954
2019-12-19 · 超过33用户采纳过TA的回答
知道答主
回答量:153
采纳率:50%
帮助的人:47.1万
展开全部
拆出来,最终是为了在数据库insert使用吗?还是提供查询功能传递给前端使用?
如果是给前端使用,不用你处理,前端自己拆分处理是最好的方案。
如果是给数据库使用,要看你是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
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
刀晓
2019-12-19 · TA获得超过347个赞
知道小有建树答主
回答量:1075
采纳率:78%
帮助的人:108万
展开全部
用substr
只是纠结麻烦
先把值提取出来之后,按照想要的格式插入到新表中,就可以了
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式