java代码列转多行

本方法适应于将【字符串分割符转为多行数据】

数据库中的数据格式如下,其他字段省去,此需求还同时解决like模糊查询  其中转换后的数据中detail 中含有的id ;其他如排序不进行讲解

ids        detail

1,2,3     1:405|3:890

希望转换后的数据为

id      detail

1      1:405|3:890

2       1:405|3:890

3       1:405|3:890

并且希望最终结果为  detail like '%id%'

1      1:405|3:890

3       1:405|3:890

 

 

  User user = new User();
        user.setIds("1,2,3");
        user.setName("张四");
        user.setAge(15);
        user.setDetails("1:405|3:890");
        User user2 = new User();
        user2.setIds("405,57,6");
        user2.setName("李三");
        user2.setAge(18);
        user2.setDetails("405:405|8:890");

        ArrayList<User> users = new ArrayList<User>();

        users.add(user);
        users.add(user2);
        ArrayList<User> users2 = new ArrayList<User>();
        users.stream().forEach((en) -> {
            if (en.getIds() != null && !"".equals(en.getIds())) {
                String[] split = en.getIds().split(",");
                System.out.println(Arrays.asList(split));

                Arrays.stream(split).forEach((t) -> {
                    User instance = getInstance();
                    instance.setId(t);
                    instance.setDetails(en.getDetails());
                    instance.setName(en.getName());
                    instance.setAge(en.getAge());
                    instance.setIds(en.getIds());
                    users2.add(instance);
                });
            }

        });
        List<User> collect = users2.stream().filter(d -> d.getDetails().contains(d.getId())).sorted(Comparator.comparing(User::getAge).reversed().thenComparing(User::getName)).collect(Collectors.toList());

        System.out.println(collect);
public static User getInstance() {
    return new User();
}

 

以上为oracle语法(递归查询和正则匹配)转mysql语法遇到 

 

 

 

 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值