where子句以及concat和<

时间:2015-04-07 12:40:48

标签: sql oracle

有人可以帮我理解这个查询..

select * from tab1 where col5 || :bv1 < :bv2 ;

table tab1包含5列和col5的值,除了一行为NULL且始终为:bv1 < :bv2

当我运行上面的查询时。我看到除了col5为NOT NULL的行之外的所有行。

where col5 || :bv1 < :bv2 ;是什么意思?

如果我没有错,<的偏好高于||

1 个答案:

答案 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'