在线 Oracle Application Express 中的用户输入

User Input in Oracle Application Express online

在 Oracle Application Express online 上,我希望能够读取用户的输入。

我想写一个 SQL 语句来显示名字以用户输入的字母开头的所有员工。我以为我们写

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

但这行不通。它显示 "no data found".

这个我也试过了,还是不行。这个在我输入任何字母后给出错误信息"ORA-00911: invalid character"。

SELECT * FROM employees
WHERE first_name LIKE :letter%;

我只是一个初学者,当我搜索时,我不明白我的错误是什么。非常感谢您的帮助。

假设 P1_LETTER 是您为用户输入字母而创建的文本字段页面项的名称,您需要

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

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

请记住,字符串比较区分大小写。因此,如果用户输入 "j",它们将不会匹配到 "Justin"。它们只会匹配 "justin"。您可能希望将表达式的两边都转换为小写或大写,以便进行不区分大小写的比较。

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

我知道有点太晚了,但我最近遇到了同样的问题,我刚刚发现与其使用 & 不如像下面这样尝试 :,它应该可以工作很好!

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