我是 Oracle 数据库查询开发的初学者。我正在为我的项目开发搜索功能,以按Zip或Name或City搜索 Stores ,其中将向用户提供“一个 HTML 输入框”来输入搜索词。只有一个名为 Stores 的表
显示搜索结果的条件是
- 如果与结果匹配的搜索词
ZIP应该是GROUP和SORT BY ZIP DESC - 如果与结果匹配的搜索词
NAME应该是 group 和 sort byNAME IN ASC并且与 to 相同CITY - 如果搜索词与
ZIP,NAME和CITY(to all) 匹配,则首先匹配的结果ZIP应显示在 中DESC order,CITY然后是 TheNAME
我试过这样的事情
SELECT s.uuid AS uuid, COUNT(*) over() AS rowcount
FROM Stores s
WHERE s.postalcode LIKE '%87%'
OR s.city LIKE '%87%'
OR CONCAT(CONCAT(s.firstname, ' '),s.lastname) LIKE '%87%'
GROUP BY s.city, s.postalcode,
CONCAT(CONCAT(s.firstname, ' '),s.lastname), s.uuid
ORDER BY CASE WHEN s.postalcode LIKE '%87%'
THEN s.postalcode END DESC,
CASE WHEN CONCAT(CONCAT(s.firstname, ' '),s.lastname) LIKE '%87%'
THEN CONCAT(CONCAT(s.firstname, ' '),s.lastname)
ELSE s.postalcode END ASC,
CASE WHEN s.city LIKE '%87%'
THEN s.city END
此查询未按预期显示结果(我的意思是它显示没有顺序的结果,而不是像第一个 zip,下一个城市后跟名称)。
如何进行查询以满足上述要求,我是否需要使用存储过程来做到这一点?任何建议将不胜感激。