十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
你是说SQL吗?
成都创新互联坚持“要么做到,要么别承诺”的工作理念,服务领域包括:成都网站建设、做网站、企业官网、英文网站、手机端网站、网站推广等服务,满足客户于互联网时代的安仁网站设计、移动媒体设计的需求,帮助企业找到有效的互联网解决方案。努力成为您成熟可靠的网络建设合作伙伴!
在表的字段之间,多表查询时表名之间使用逗号;SQL语句结束使用分号;其他情况应该就不需要使用符号了。
这个用过程完成比较好,这样的话可以写几个循环,然后一个循环一个循环的来做,比较好解释和控制,而且写得量应该可不大。判断下instr(字符串,n)的位置然后进行截取,以及判断是否为0等,就可以进入和跳出循环。外层则可以是一个游标。遍历class表。这样就可以了。
如果硬要写一个sql,那么这里才几个逗号,如果逗号很大,那么可能要写很多的decode或者case when,而且不是十分好控制。假如有最多21个逗号,那么你就要写22个decode。这个工作量有点大了吧。
写完后,进行行转列,找到username,然后用wm_concat,username合并或者用,最后在根据查到表的id和class的id进行对应,得到查询结果,可是似乎有点太麻烦了。
我尝试用start with做,可是没办法实验,不知道行不行,感觉上似乎可以,但是总觉得哪里不对。
基本上而言这种方式已经是最简单的了。
你想,首先你要写文字列,这部分是不能省,也没办法省的,那么剩下的就是中间的逗号,就算你先把逗号加在每个字段的前面或者后面,那么最后不是还要去掉一个逗号,这样反而增大了查询的繁琐性。
当然,如果真的想写,自己写一个函数也可以(其实就是加一个分隔符,可以用循环的方式也可以用最后一个分隔符去掉的方式),不过这种需求应该不多,至少我没见过几回,所个人觉得必要性不大。
还有一种方式是先列转行(说成行转列也行,反正都是旋转90度),然后用wmsys_concat来做
不过不管哪种方式个人觉得,现在的这种方式更便于操作,改变。假设,今天是5个字段的合并,假设明天改变需求,要求6个或者4个,那么对于这个语句来说可能稍微增加或减少几个字符就行了,如果是函数或者列转行,那么就要麻烦很多了。