zoukankan      html  css  js  c++  java
  • Oracle 字段是多个值的字符串的查询处理

    1、创建两张表一张用户表(T_User),一张兴趣小组表T_Group,其中小组成员字段存储用户ID列表以逗号隔开,

      表:T_User

      编号(F_ID)   名称(用户名)
      1         张三
      2         李四
      3         王五

      表:T_Group

      编号(F_ID)   名称(兴趣小组名字)//group_name    兴趣小组成员ID/member_list
      1         奥数                  1,2
      2         动物世界                2
      3         艺术                  1,2,3

     要求查询结果:

      编号(F_ID)   名称(兴趣小组名字)  兴趣小组成员ID
      1         奥数          张三,李四
      2         动物世界        李四
      3         艺术          张三,李四

      SQL语句:

    select f_id,group_name,

    (select wm_sys.wm_concat(to_char(f_name)) from t_user where insert(member_list,f_id)>0 ) as memberList_name

    from t_gourp

    这中间用到了两个函数

    wm_sys.wm_concat 将多行单列字段拼成已逗号隔开的字符串

    insert(string,substring) 返回substring 在字符string 的索引,这个函数很奇怪吧,不用管那么多直接当indexof 用就行了

    上面建表严重违反三大范式,但是实际开发中确实存在这样的情况,希望朋友们勿喷

  • 相关阅读:
    204. 计数质数
    236. 二叉树的最近公共祖先
    优先队列和哈夫曼树
    185. 部门工资前三高的所有员工(求组内前几的值)
    部门工资最高的员工(求组内最大值)
    回调函数的案例
    单链表
    动态数组
    一致性哈希算法的基本原理
    只用2GB内存在20亿个整数中找到出现次数最多的数
  • 原文地址:https://www.cnblogs.com/Dylanblogs/p/4178268.html
Copyright © 2011-2022 走看看