永发信息网

oracle数据库一个表字段中存了id,并以逗号分隔,id对应的详细信息在另一个表中

答案:2  悬赏:70  手机版
解决时间 2021-03-03 02:58
  • 提问者网友:谁的错
  • 2021-03-02 07:37
现在有两个表,表a中

aid 主管领导
1 1,2,3
2 2,4

表b中

bid 姓名
1 李一
2 刘二
3 张三
4 李四

怎么联合查询出
序号 主管领导 主管领导姓名
1 1,2,3 李一,刘二,张三
2 2,4 刘二,李四
最佳答案
  • 五星知识达人网友:一叶十三刺
  • 2021-03-02 09:09
SELECt 
  rownum,
  t.aid,
  wm_concat (t1.name) 
FROM
  leader t 
  INNER JOIN leader_name t1 
    ON INSTR(
      CONCAt(',', t.aid, ','),
      CONCAt(',', t1.bid, ',')
    ) > 0 
GROUP BY t1.aid ;试试,思路就是根据字符串截取,匹配id,然后group by,行转列。防止那种1匹配到10,就按照前后加逗号的方式
全部回答
  • 1楼网友:胯下狙击手
  • 2021-03-02 09:30
1、64位linux 和64位oracle,默认oracle表空间数据文件用的blocksize是8k,表空间数据文件最大是32g。 sql>show parameter k_cache_size 查看数据库默认的块大小 sql> show parameter db_block_size db_block_size integer 8192 2、为了让一个表空间数据文件存64g,你需要告诉oracle用blocksize 是16k create tablespace test datafile ‘/data1/test_ts1.dbf’ size 512m autoextend on next 256m maxsize unlimited blocksize 16k; 提前需要设置db_16k_cache_size alter system set db_16k_cache_size=16m scope=both; 否则会报错ora-29339: tablespace block size 16384 does not match configured block sizes 3、为了让一个表空间数据文件存128g,你需要告诉oracle用blocksize 是32k 4、32位linux 和32位oracle,默认oracle表空间datafile用的blocksize也是8k,表空间数据文件最大也是32g。试了一下64g文件,也没有问题。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯