查询多值列的条件

Jes*_*owa 0 sql oracle

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

-----------------------------------
| ID   |  NAME   |  PROJECT_ID    |
-----------------------------------
|  1   |   P1    | 23:45:56       |
|  2   |   P2    |    23          |
|  3   |   P3    |    45:65       |
-----------------------------------
Run Code Online (Sandbox Code Playgroud)

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

 Select name from table where project_id = 23;
Run Code Online (Sandbox Code Playgroud)

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

任何帮助非常感谢.

Har*_* CO 5

您可以使用LIKE而不是=:

Select name from table where project_id LIKE '%23%';
Run Code Online (Sandbox Code Playgroud)

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

SELECT name FROM table WHERE ':' || project_id || ':' LIKE '%:23:%'
Run Code Online (Sandbox Code Playgroud)

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