大佬们,我想取圈起来的数据该咋取嘞?

QQ图片20230525163456.jpgPO:1000.0|1019.2|1049.7|11.88  这样是为一组数据QQ图片20230525161518.jpg

FineReport Ccc 发布于 2023-5-25 16:16 (编辑于 2023-5-25 16:35)
1min目标场景问卷 立即参与
回答问题
悬赏:3 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共3回答
最佳回答
0
Z4u3z1Lv6专家互助
发布于2023-5-25 16:52

with test as(

SELECT '(TP)F3939C|B089P25011DCO|230407|2761|PO:1000.0|1019.2|1049.7|11.88|WD:452.5|453.5|455.0|0.63|VF:3.02|3.06|3.10|0.02|' [A]

)

SELECT T2.LX,substring(T2.SJ,b.number,charindex('|',T2.SJ+'|',b.number)-b.number) as [SJ2]  FROM (

SELECT SUBSTRING(T1.B,1,2) [LX],SUBSTRING(T1.B,4,LEN(T1.B)-4) [SJ] FROM (

SELECT SUBSTRING(A,PATINDEX('%PO:%',A),PATINDEX('%WD:%',A)- PATINDEX('%PO:%',A)) [B] FROM TEST

UNION ALL

SELECT SUBSTRING(A,PATINDEX('%WD:%',A),PATINDEX('%VF:%',A)- PATINDEX('%WD:%',A)) FROM TEST

UNION ALL

SELECT SUBSTRING(A,PATINDEX('%VF:%',A),LEN(A)- PATINDEX('%VF:%',A))+'|' FROM TEST

) T1

) T2,master..spt_values b with(nolock) 

where b.number>=1 and b.number<len(T2.SJ) and b.type='P'

and substring('|'+T2.SJ,number,1)='|'

image.png

最佳回答
0
CD20160914Lv8专家互助
发布于2023-5-25 16:20(编辑于 2023-5-25 16:25)

你的标准是什么?复制一下数据出来

"PO:"+INDEXOFARRAY(split(a1,"PO:"),2)

这样?

"PO:"+INDEXOFARRAY(SPLIT(INDEXOFARRAY(SPLIT("(TP)F3939C|B089P25011DCO|230407|2761|PO:1000.0|1019.2|1049.7|11.88|WD:452.5|453.5|455.0|0.63|VF:3.02|3.06|3.10|0.02|","PO:"),2),"WD"),1)

image.png

  • Ccc Ccc(提问者) (TP)F3939C|B089P25011DCO|230407|2761|PO:1000.0|1019.2|1049.7|11.88|WD:452.5|453.5|455.0|0.63|VF:3.02|3.06|3.10|0.02|
    2023-05-25 16:23 
  • CD20160914 CD20160914 回复 Ccc(提问者) 为什么是取到WD:前面,是PO后面,WD前面吗?
    2023-05-25 16:23 
  • CD20160914 CD20160914 回复 Ccc(提问者) 因为你没有说清楚后面的截取标准。那么我只按我理解的PO后面,WD前面。不然你说清楚你的规则
    2023-05-25 16:26 
  • Ccc Ccc(提问者) sql能实现嘛? 顺序是固定 PO WD VF
    2023-05-25 16:34 
  • CD20160914 CD20160914 回复 Ccc(提问者) 不知道你是什么数据库。
    2023-05-25 16:35 
最佳回答
0
1592Lv6高级互助
发布于2023-5-25 16:20

转换成数组,split(a1,"\\|")

结合,如果其实位置固定的话

image.png

  • 3关注人数
  • 287浏览人数
  • 最后回答于:2023-5-25 16:52
    请选择关闭问题的原因
    确定 取消
    返回顶部