我需要使用字符索引來定位單詞的一部分,并成為它在資料庫中找到的前 100 個物件,但由于某種原因,它給了我幾個錯誤并且不知道出了什么問題。我試圖避免使用 LIKE 函式。
''' SELECT CHARINDEX('Harry', TITLE ), TITLE FROM Book LIMIT 100;
''' 它一直說這是一個無效的識別符號。我查看了幾個來源,但似乎無法弄清楚發生了什么。任何幫助,將不勝感激。
uj5u.com熱心網友回復:
CHARINDEX不是有效的 Oracle 函式,LIMIT不在 Oracle 中使用。你想要這個INSTR功能。
從 Oracle 12 開始,您可以使用:
SELECT INSTR(title, 'Harry'),
TITLE
FROM Book
FETCH FIRST 100 ROWS ONLY;
或者,在早期版本中(因為您沒有使用ORDER BY子句而只是獲取前 100 行):
SELECT INSTR(title, 'Harry'),
TITLE
FROM Book
WHERE ROWNUM < 100;
如果要將其用作過濾器并使用ORDER BY子句,則:
SELECT TITLE
FROM Book
WHERE INSTR(title, 'Harry') > 0
ORDER BY title
FETCH FIRST 100 ROWS ONLY;
或者
SELECT title
FROM (
SELECT title
FROM Book
WHERE INSTR(title, 'Harry') > 0
ORDER BY title
)
WHERE ROWNUM < 100;
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/333118.html
