sql正则表达式问题
答案:1 悬赏:10 手机版
解决时间 2021-02-20 15:34
- 提问者网友:欺烟
- 2021-02-20 08:19
order\s+by\s+[^,\s]+(\s+asc|\s+desc)?(\s*,\s*[^,\s]+(\s+asc|\s+desc)?)*,麻烦问下这个正则的意思,例如我sql后半部分为这样order by WO_COMMIT_DATE desc就可以,没有任何问题,但是如果是这样order by case WO_PROCESS when '7' then 1 when '3' then 2 when '0' then 3 else 4 end,WO_COMMIT_DATE desc,却只能匹配到order by case ,但是asc和ase不一样吧,为什么匹配到case就结束了,要改的话需要怎么改?
最佳答案
- 五星知识达人网友:神鬼未生
- 2021-02-20 09:57
[^,\s]这个的意思是比如 order by abc asc, def desc,..., 要判断字段名不包含空格,也就是\s,而且多个asc或者desc直接要用逗号分隔。
因为你这种特例是order by的变量也含有空格,是作者没想到的,解决办法去掉那个\s。不过其他副作用就不清楚了。
因为你这种特例是order by的变量也含有空格,是作者没想到的,解决办法去掉那个\s。不过其他副作用就不清楚了。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯