所以我得到了一个字符串x.y.z,我希望与数据库中的字段进行比较。 但是如果我在数据库字段中找不到字符串,我想测试查找x.y而不是x,如果找不到x.y。
如果字符串可以是x-leaf long,是否可以在查询中执行此操作?
答案 0 :(得分:1)
使用LIKE
(即WHERE 'x.y.z' LIKE 'x.y%'
)或INSTR()
(即WHERE INSTR('x.y.z', 'x.y') = 1
)查找匹配的行,然后进行最长的匹配:
SELECT *
FROM (
SELECT t.*
FROM table_name t
WHERE 'x.y.z' LIKE t.VALUE || '%'
ORDER BY LENGTH( t.VALUE ) DESC
)
WHERE ROWNUM = 1;
答案 1 :(得分:0)
这是一种方法
select t.*
from (select t.*
from t
where t.col like 'x.%'
order by (case when t.col = 'x.y.z' then 1
when t.col like 'x.y.%' then 2
else 3
end)
) t
where rownum = 1;