0

我正在 Oracle Apex 4.2 中构建报告。构建报告的表在其中一列中有多个值。

-----------------------------------
| ID   |  NAME   |  PROJECT_ID    |
-----------------------------------
|  1   |   P1    | 23:45:56       |
|  2   |   P2    |    23          |
|  3   |   P3    |    45:65       |
-----------------------------------

我想建立一个查询来检索基于 project_id 的名称。

 Select name from table where project_id = 23;

这显然只会返回 P2,但是我想构建一个查询,如果我们搜索 23,它将返回 P1 和 P2。

非常感谢任何帮助。

4

2 回答 2

5

您可以使用 LIKE 代替 = :

Select name from table where project_id LIKE '%23%';

如果您有一个常见的分隔符,例如您的示例中的“:”,您可以使用以下内容来排除“123”之类的结果:

SELECT name FROM table WHERE ':' || project_id || ':' LIKE '%:23:%'

通过将分隔符连接到字符串的前后,您不必编写多个条件:LIKE '23:%' OR LIKE '%:23:%' OR LIKE '%:23' 来处理第一个和列表中的最后一个数字。

于 2013-06-18T15:31:55.633 回答
1

这是 Apex 中的常见设计,因为它内置了对冒号分隔的字符串的支持(例如,用于驱动穿梭控件和其他项目类型)。

我通常使用这种模式:

Select name from table where INSTR(':'||project_id||':',':23:') > 0;

PS 很遗憾该列名称 - 我会称它为PROJECT_ID_LIST.

于 2013-06-19T04:49:25.663 回答