2

使用这些表作为示例:

代码变化

CODE
-----------
ABC_012
DEF_024
JKLX048

注册代码

CODE       AMOUNT
--------   ------
ABCM012         5
ABCK012        25
JKLM048        16

当 CODE 与CodeVariations表的任何行中的模式匹配时,是否可以编写查询来检索RegisteredCodes中的所有行?也就是说,任何与 LIKE 模式匹配的行,或'ABC_012''DEF_024''JKLX048'

结果应该是:

CODE       AMOUNT
--------   ------
ABCM012         5
ABCK012        25

我正在使用 PostgreSQL,但如果可以通过对 PostgreSQL 或任何其他数据库的简单查询来了解是否可以做到这一点,将会很有趣。

4

4 回答 4

4

这能满足您的需要吗?

select distinct RC.* from RegisteredCodes RC, CodeVariations CV
where RC.CODE LIKE CV.CODE;
于 2009-02-26T04:56:39.950 回答
0

这是你要找的:

SELCET * FROM RegisteredCodes RC WHERE RC.Code IN (SELECT CODE FROM CodeVariations WHERE CODE LIKE ('ABC%') AND CODE LIKE ('%012')

这将获取所有以 'ABC' 开头并以 '012' 结尾的记录,以及类似 'DEF' 和 'JKL' 的记录。
或者

你在寻找这样的东西

于 2009-02-26T05:00:25.450 回答
0

在 Oracle 和 PostgreSQL 中,您可以将单个字符通配符“_”用于单个字符。

select RC.* from RegisteredCodes RC, CodeVariations CV
where RC.CODE LIKE 'ABC_012';

使用子字符串

select RC.* from RegisteredCodes RC, CodeVariations CV
where RC.CODE LIKE substring(CV.Code,1,3)||'_'||substring(CV.Code,5) ;
于 2009-02-26T05:14:13.370 回答
0
select * from CAT_ITEM where DESCRICAO LIKE '%TUBO%%PVC%%DNR%'

所有喜欢的列表都在一个字符串中。

于 2009-07-24T16:55:59.513 回答