【发布时间】:2011-12-30 11:40:12
【问题描述】:
假设我有两个表 msg 用于消息,mnc 用于移动网络代码。 他们没有任何关系。但我想加入他们
SELECT msg.message,
msg.src_addr,
msg.dst_addr,
mnc.name,
FROM "msg"
JOIN "mnc"
ON array_to_string(regexp_matches(msg.src_addr || '+' || msg.dst_addr, '38(...)'), '') = mnc.code
但查询失败并出现错误:
psql:marketing.sql:28: ERROR: argument of JOIN/ON must not return a set
LINE 12: ON array_to_string(regexp_matches(msg.src_addr || '+' || msg...
有没有办法进行这种加入?还是我走错路了?
【问题讨论】:
-
这可能效率极低(不使用索引,必须比较每一行)。
-
@TheifMaster,不一定,它可以使用基于函数的索引,例如如何提到upper here
-
@z4y4ts,正则表达式
38(...)是否有重要意义,或者它只是作为正则表达式的一个例子?据我所见,它只查找任何出现的 38 后跟任何 3 个其他字符。
标签: sql regex postgresql join pattern-matching