我试图从具有以下结构的表中进行选择:
MATERIALS
id
shortname
longname
Run Code Online (Sandbox Code Playgroud)
所有长名称都像短名称的行.
我已经尝试过这里提出的解决方案:SQL中的Dynamic Like Statement ,但它对我不起作用.
SELECT * from MATERIALS where longname like (shortname + '%');
Run Code Online (Sandbox Code Playgroud)
在Oracle中不起作用.
ype*_*eᵀᴹ 10
你可以使用这个CONCAT()功能:
SELECT *
FROM MATERIALS
WHERE longname LIKE CONCAT(shortname, '%')
Run Code Online (Sandbox Code Playgroud)
甚至更好,标准|| (double pipe)运营商:
SELECT *
FROM MATERIALS
WHERE longname LIKE (shortname || '%')
Run Code Online (Sandbox Code Playgroud)
Oracle的CONCAT()函数不会超过2个参数,所以人们会使用繁琐CONCAT(CONCAT(a, b), c)的操作,而操作符很简单:a || b || c