【发布时间】:2022-07-04 17:17:07
【问题描述】:
这是第一个表:
| Line_Card |
|---|
| 0-17 |
| 0-10 |
| 1-1 |
| 0-11 |
| 1-1-17 |
| 1-1-10 |
| 1-1-13 |
| 1-1-6 |
| 1-1-21 |
这是第二张表:
| Port |
|---|
| 0-13-37 |
| 1-1-2-40 |
| 0-8-29 |
| 1-1-4-12 |
| 1-1-2-14 |
| 0-1-30 |
| 0-17-25 |
| 1-1-17-62 |
| 1-1-1-55 |
下面的查询应该从连接表的产品中读取:
SELECT Line_Card, Port
FROM Table_1
LEFT JOIN Table_2 ON
Table_1.Column= Table_2.Column
AND Table_1.Port ~~ LIKE_ESCAPE((Table_2.Line_Card || \'-%\'),\'\\\')
AND Table_1.Port !~~ LIKE_ESCAPE((Table_2.Line_card || \'-%-%\'),\'\\\');
但是,它在 oracle 上显示了无效的 SQL 字符错误。如果有人也可以给我这个声明的等价物或 Teradata 中的无穷大符号,将不胜感激。
-
此查询是否来自from PostgreSQL?
-
不,这是甲骨文
-
它不是 Oracle 的有效语法。那么它是从哪里来的从,您的问题真的是关于将 PostgreSQL 查询转换为 Oracle 方言吗? (无论如何,那个链接的问题可能会告诉你 ~~ 的含义。)
-
好吧,事情是我正在研究别人的代码,并且我理解这是 oracle 并且 ~ 在 oracle 中有目的。问题是我找不到对双无穷大 ~~ 符号的任何引用。
-
那是因为它在 Oracle 中没有意义。同样,链接说它们是 PostgreSQL 运算符,相当于 LIKE 和 NOT LIKE,所以应该很容易修改。 (而
LIKE_ESCAPE()看起来像是一个用于转义通配符的定制函数——不清楚是否需要复制它。)