程序员-努力的小白 2018-12-14 02:42 采纳率: 0%
浏览 570

如何用sql截取[]里的每一行数据 和 =后的数据

效果图 为
40 0
30 0
41 0
31 1
56 0.85

需要截取的字段 为
[40,35,41]=0=0;[31,37,36,34,39,21,20,22,25,26,24,23,27,33,38,50,57,53,52,54,59,55,51,56,58,11,10,12]=0=1.00;

求解 急。。

  • 写回答

1条回答 默认 最新

  • lshen01 2023-03-15 18:46
    关注

    参考GPT和自己的思路:

    根据你的需求,可以使用SQL中的字符串函数和正则表达式来实现截取所需的数据。

    针对你的例子,你需要截取出[]中的每一行数据和=后的数据,可以使用正则表达式将其匹配出来。

    具体方法如下:

    1. 使用SUBSTRING函数截取出[]中的内容。

    例如:

    SELECT SUBSTRING(column_name, CHARINDEX('[', column_name) + 1, CHARINDEX(']', column_name) - CHARINDEX('[', column_name) - 1) as bracket_content
    FROM table_name;

    这里的column_name指的是包含需要截取的内容的列名,table_name则是包含该列的表名。这条语句将会返回[]中的内容,即:

    40,35,41=0=0;31,37,36,34,39,21,20,22,25,26,24,23,27,33,38,50,57,53,52,54,59,55,51,56,58,11,10,12=0=1.00

    1. 然后,我们需要将[]中的内容按行进行分割,并取出=后的数据。这里可以使用正则表达式的拆分功能来实现:

    SELECT value
    FROM unnest(regexp_split_to_array(bracket_content, ';')) WITH ORDINALITY t(value, rn)
    WHERE t.rn%2=0;

    这里的regexp_split_to_array将[]中的内容按照分号进行拆分,并返回一个数组,然后我们再将其转换成行形式,其中WITH ORDINALITY可以保证每个行的顺序。

    最后,我们通过取出数组下标为偶数的元素,即=后的数据,即可得到最终结果:

    0
    0
    1.00

    以上就是使用SQL截取[]里的每一行数据和=后的数据的具体方法。

    评论

报告相同问题?

悬赏问题

  • ¥65 永磁型步进电机PID算法
  • ¥15 sqlite 附加(attach database)加密数据库时,返回26是什么原因呢?
  • ¥88 找成都本地经验丰富懂小程序开发的技术大咖
  • ¥15 如何处理复杂数据表格的除法运算
  • ¥15 如何用stc8h1k08的片子做485数据透传的功能?(关键词-串口)
  • ¥15 有兄弟姐妹会用word插图功能制作类似citespace的图片吗?
  • ¥15 latex怎么处理论文引理引用参考文献
  • ¥15 请教:如何用postman调用本地虚拟机区块链接上的合约?
  • ¥15 为什么使用javacv转封装rtsp为rtmp时出现如下问题:[h264 @ 000000004faf7500]no frame?
  • ¥15 乘性高斯噪声在深度学习网络中的应用