相关文章推荐
俊逸的长颈鹿  ·  python ...·  3 年前    · 

oracle 神一样的逻辑,总会受到限制 length replace 例子

之前遇到个题目,在 emp 表里 列出名字中包含 A 并且名字是4个字的,按我的逻辑思路,很快能得出答案:

SELECT *

FROM emp

WHERE ename LIKE '%A%' AND ename LIKE '____';

但爱折腾的我总想看看有什么其他方法实现,然后他来了:

SELECT * FROM EMP WHERE LENGTH( ENAME LIKE '%A%') = 4;

感觉这个很屌,但是执行就报错了:

然后这个坑得怎么填呢,可以分开用and的模式获取正确的答案,不能用了length后在他括号里用like函数,length函数里面不能这种逻辑,一般来说函数是传值的 ,只有逻辑里才嵌套逻辑,确实这样看有点绕,我们再举个例

SELECT replace (replace ('aaaa','a','b'),'b','c') FROM dual;

很开心,执行成功了

为什么这样嵌套又可以生效呢?其实是因为我这次传的是值,而length上面我们传入的是 “ENAME LIKE '%A%'”是个条件,所以失败了,这就可以让你更深入的了解函数的运用了,希望有其他见解评论,共同成长。

编辑于 2020-07-12 19:52

文章被以下专栏收录