我想從以下結構的表中選擇:動態「喜歡」在SQL(Oracle)的聲明
MATERIALS
id
shortname
longname
所有的線路,其中長的名字是一樣的簡稱。
我試過這裏提出的解決方案:Dynamic Like Statement in SQL ,但它不適用於我。
SELECT * from MATERIALS where longname like (shortname + '%');
在Oracle中不起作用。
我想從以下結構的表中選擇:動態「喜歡」在SQL(Oracle)的聲明
MATERIALS
id
shortname
longname
所有的線路,其中長的名字是一樣的簡稱。
我試過這裏提出的解決方案:Dynamic Like Statement in SQL ,但它不適用於我。
SELECT * from MATERIALS where longname like (shortname + '%');
在Oracle中不起作用。
可以使用CONCAT()
功能:
SELECT *
FROM MATERIALS
WHERE longname LIKE CONCAT(shortname, '%')
甚至更好,標準|| (double pipe)
操作:
SELECT *
FROM MATERIALS
WHERE longname LIKE (shortname || '%')
Oracle的CONCAT()
功能不超過2爭論,所以人們會使用暨同時與運營商它是簡單的:a || b || c
CONCAT()
可能是技術上最正確的。
爲了方便,但是,Oracle 確實有相當的運營商+
...
SELECT *
FROM MATERIALS
WHERE longname LIKE (shortname || '%')
如果我沒有錯,'||'在技術上是正確的,'+'是非標準的。 –
但我可能是錯的。不確定。 –
@ypercube:你是[正確](http://troels.arvin.dk/db/rdbms/#functions-concat)。 – Allan
我找到了答案在此期間:SELECT * FROM材料,其中LONGNAME就像CONCAT(上(短名稱), '%'); –