2015-09-09 33 views
0

在Oracle Application express在線上,我希望能夠讀取來自用戶的輸入。Oracle Application Express在線用戶輸入

我想編寫一條SQL語句來顯示以用戶輸入的字母開頭的所有名字的僱員。我以爲我們寫

SELECT * FROM employees 
WHERE first_name LIKE '&letter%'; 

但這不起作用。它顯示「找不到數據」。

我也試過這樣做,但它仍然是錯誤的。在輸入任何字母后,此錯誤信息會提示「ORA-00911:invalid character」。

SELECT * FROM employees 
WHERE first_name LIKE :letter%; 

我只是一個初學者,當我搜索時,我不明白我的錯誤是什麼。我將衷心感謝您的幫助。

+0

說一些「不起作用」對我們沒有多大幫助。如果您將Oracle錯誤消息包含在內,或者您看到的結果說明與您期望的結果相比較,那麼您的問題會更好。我們可以猜出問題的可能性,但我們可能會猜錯。 –

+0

我添加了錯誤消息。 – Jaquline

回答

2

假設P1_LETTER是您爲用戶創建輸入字母文本字段頁面項目的名稱,你會希望

SELECT * 
    FROM employees 
WHERE first_name LIKE :p1_letter || '%' 

SELECT * 
    FROM employees 
WHERE substr(first_name,1,1) = :p1_letter 

記住字符串比較區分大小寫。所以如果用戶輸入「j」,他們就不會匹配「Justin」。他們只會匹配「賈斯汀」。您可能希望將表達式的兩邊都轉換爲小寫或大寫,以便進行不區分大小寫的比較。

SELECT * 
    FROM employees 
WHERE lower(first_name) LIKE lower(:p1_letter) || '%' 
+0

非常感謝!它的工作原理現在我明白了。你的例子非常有用。 – Jaquline

相關問題