有人可以帮我理解这个查询..
select * from tab1 where col5 || :bv1 < :bv2 ;
table tab1包含5列和col5的值,除了一行为NULL且始终为:bv1 < :bv2
。
当我运行上面的查询时。我看到除了col5为NOT NULL的行之外的所有行。
where col5 || :bv1 < :bv2 ;
是什么意思?
如果我没有错,<
的偏好高于||
答案 0 :(得分:1)
这是做什么的?
where col5 || :bv1 < :bv2
完全它说的是什么。首先,它连接col5
和:bv1
,然后将它们与:bv2
进行比较。也许用圆括号会更清楚:
where (col5 || :bv1) < :bv2
SQL“运算符”在“条件”之前进行评估,如documentation中所述。
因此,如果值为'a'
,'b'
和'c'
,那么比较将是'ab'
到'c'
,结果将是真。
编辑:
默认情况下,Oracle将NULL
视为连接中的空字符串。所以,NULL || 'a'
- &gt; 'a'
。