系统城装机大师 - 固镇县祥瑞电脑科技销售部宣传站!

当前位置:首页 > 数据库 > MsSql > 详细页面

sql语句将数据库一条数据通过分隔符切割成多列方法实例

时间:2023-03-11来源:系统城装机大师作者:佚名

需求场景

在实际场景之中,我们有时候会遇到一种情况,就是数据库中某一字段存了很长的一段字符串,里面用了分隔符进行分割,但是很不直观,你想查一下数据库把这个字段下的数据,按分隔符切割出来,并划分到下面几列上面,但又苦于只能写sql。这种情况下应该怎么办呢。

应对措施

首先这种情况下,sql是可以完全满足需求的。sql在代码中不仅可以用curd,更可以对数据的查询做一些操作,但是注意不要出现慢查询。

话题转回来,无论是写Java还是写SQL,首先都要对需求有一个实现的思路,这里我的思路是:

因为不知道这个字段下各个数据的长度,所以不能用substring_index进行简单的划分,需要像剥洋葱那样一层一层的剥下来,所以需要用两个substring_index嵌套来进行切割,那切割的过程中怎么去让数据也就是洋葱皮从第一层到第二层。这里就涉及到对自增序列的使用。

大家肯定知道在联表查询的时候,需要对两个表命名别名,这里我们的操作也是一样一个命名为t用来展示数据,一个命名为d用来通过切割后,将多余的数据向下用列来进行展示。

所以在上面进行切割的时候,最里面的选中第几层数据的substring_index里面的第三个参数就使用d里面的自增id来进行实现,当然也可以选择其他拥有自增属性的字段,因为这里我们并不需要它的数据,而是需要它的自增属性,来代替while或者for中的那个i++来让数据向下命中下一个分隔符继续切割下去,而最外层的substring_index就用来选择展示多长的数据就好了。

做完上面的切割,并且拥有了可以向下一分隔符切割的手段之后,怎么让这段代码循环起来呢。一般可以使用while来进行。但是我们之前用到了id的自增属性,所以这里我们依旧使用这个属性,并且用join字段,计算出每条数据中切割后数据的长度后。通过id++来进行循环。(因为切割只能切割一回,所以这里使用的是replace来将分隔符替换为‘’数据,实现分隔符的消失。

效果展示

这里需要对value数据进行切割,并展示variable数据,id为自增主键。

原数据库展示

通过查询语句查询之后将数据分列之后展示,如果需要id自增,大家可以对第一个t.id自行修改。

切割后数据展示

具体代码

作为一个开发人员,思路和对业务的分析永远是最重要的,代码的实现不过是最后对于解题成果的展示。这里附加上我的SQL代码,供大家品鉴。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
SELECT
    t.id,
    t.variable,
    substring_index(
        substring_index(
            t.value,
            ',',
        b.id
    ),
    ',', -1
) AS value
FROM
    sys.sys_config t
    JOIN sys.sys_config b ON b.id <= (
    length(t.value) - length( REPLACE ( t.value, ',', '' )) + 1
);

总结

到此这篇关于sql语句将数据库一条数据通过分隔符切割成多列的文章就介绍到这了

分享到:

相关信息

  • SQL Server 数据库中的收缩数据库和文件操作

    收缩数据文件通过将数据页从文件末尾移动到更靠近文件开头的未占用的空间来恢复空间,在文件末尾创建足够的空间后,可取消对文件末尾的数据页的分配并将它们返回给文件系统,本文给大家介绍SQL Server 数据库中的收缩数据...

    2023-10-27

  • dbeaver配置SQL server连接实现

    一、需要java jdk环境,我用的比较新 二、dbeaver新建连接SQL server...

    2023-10-27

系统教程栏目

栏目热门教程

人气教程排行

站长推荐

热门系统下载