2
我有以下Oracle SQL查詢。給定名稱和姓氏後,它會按照任意順序查找帶有一個名稱和另一個的首字母的所有記錄。我創建了score
列,以便將可能的匹配放在結果集的頂部。添加CASE語句的結果
SELECT
surname,
givenname,
(CASE WHEN surname = 'Smith' THEN 2 ELSE 0)
+ (CASE WHEN givenname = 'John' THEN 1 ELSE 0)
AS score
FROM person
WHERE (surname = 'Smith' AND givenname LIKE 'J%')
OR (surname LIKE 'S%' AND givenname = 'John')
OR (surname = 'John' AND givenname LIKE 'S%')
OR (surname LIKE 'J%' AND givenname = 'Smith')
ORDER BY
score DESC,
surname ASC,
givenname ASC;
問題是score
是在+
的位置給了一個錯誤。該IDE報告:
Syntax error, expected:
/
*
|
和執行報告:
SQL Error: ORA-00905: missing keyword
我在做什麼錯?有沒有更好的方法來計算分數?
+1。這是一個常見的疏忽。 –
Bah!它沒有暗示的一件事從我的陳述中遺漏了。謝謝! –