内部SELECT查询中的Oracle LIKE-wildcard

时间:2014-05-02 16:56:10

标签: sql tsql oracle11g

在SQL Server T-SQL中,我曾经使用过像这样的场景

SELECT .. FROM .. WHERE sometable.eng LIKE (SELECT tmpcolumn FROM tmptable WHERE tmpID = @counter) + '%';

如何传递LIKE(子查询)+'%'在Oracle正确吗? 它是否真的适用于Oracle 11g +?

.. smth LIKE (SELECT .. FROM ..) + '%';

固定长度的下划线_不符合我的需要,所以只有%。

2 个答案:

答案 0 :(得分:3)

Oracle使用||进行字符串连接,而不是+。所以它应该是:

smth LIKE (SELECT .. FROM ..) || '%'

答案 1 :(得分:0)

这似乎是一个奇怪的表述。就像一张纸条,我会把查询写成:

SELECT ..
FROM ..
WHERE EXISTS (SELECT 1
              FROM tmptable
              WHERE tmpID = @Counter AND
                    sometable.eng LIKE tmpcolumn || '%'
             );

在关键字LIKE和通配符之间放置子查询会使查询更难阅读(至少对我而言)。