时间:2021-07-01 10:21:17 帮助过:58人阅读
问题是代码可读性非常差, 需要先将 name list 打散, 然后为每个 name先包一个单引号, 然后再套一个循环, 构建完整的 in 子句.
2. 使用 Connect by 的写法(SQL server 对应的有 Split table function)
Select id From Employee Where Emp_Name In (Select Regexp_Substr(‘KING,JONES,FORD‘ ,‘[^,]+‘ ,1 ,Level) Emp_Name From Dual Connect By Regexp_Substr(‘KING,JONES,FORD‘ ,‘[^,]+‘ ,1 ,Level) Is Not Null);
貌似代码很长, 但可读性非常好, 只要传两次 name list 即可. 不需要打散name list, 不需要为单个name包单引号, 不需要使用循环重新构建一个带单引号的 name list.
结论, 推荐使用第2种写法.
如何优雅地拼SQL的in子句
标签:eve 循环 dual nec back 一个 col ack lis