我正在尝试从具有以下结构的表中进行选择:
MATERIALS
id
shortname
longname
长名称就像短名称的所有行。
我已尝试过此处提供的解决方案:Dynamic Like Statement in SQL ,但它对我不起作用。
SELECT * from MATERIALS where longname like (shortname + '%');
在Oracle中不起作用。
答案 0 :(得分:10)
您可以使用 CONCAT()
功能:
SELECT *
FROM MATERIALS
WHERE longname LIKE CONCAT(shortname, '%')
甚至更好,标准 || (double pipe)
运算符:
SELECT *
FROM MATERIALS
WHERE longname LIKE (shortname || '%')
Oracle的CONCAT()
函数不会超过2个参数,因此可以使用繁琐的CONCAT(CONCAT(a, b), c)
,而使用运算符则很简单:a || b || c
答案 1 :(得分:2)
CONCAT()
可能是技术上最正确的。
但是,为方便起见,ORACLE 具有与+
等效的运算符...
SELECT *
FROM MATERIALS
WHERE longname LIKE (shortname || '%')