我正在将别人的View从Oracle DB迁移到Mysql DB。我不熟悉 table(cast(multiset()))
操作符,所以我不知道如何将它转置到MySql的
给我带来错误的代码部分如下。
SELECT csCOUNTRY.ID, csCOUNTRY.COUNTRY_ID,
trim(regexp_substr(COUNTRY_ID, '[^;]+', 1, levels.column_value)) AS COUNTRY_ID_2
FROM table_study csCOUNTRY,
table(
cast(
multiset(select level from dual connect by level <= length (REGEXP_REPLACE(COUNTRY_ID, '[^;]+')) + 1) as sys.OdciNumberList)
)
levels)
我收到的错误是:
#1064 - 你的SQL语法有错误;请检查你的MySQL服务器版本的手册,以了解在第255行 "table(cast(multiset(select level from dual connect by level <= length (REGEXP_R) "附近应该使用的正确语法。
如何才能正确地转置?
Multicast将行转换为单一的表类型。Oracle表的列类型可以是标准的Oracle SQL类型(number, char, varchar2)或用户定义的表类型。
但是,这里的投递和多播操作符是多余的.下面的查询应该给出相同的结果。
SELECT csCOUNTRY.ID, csCOUNTRY.COUNTRY_ID,
trim(regexp_substr(COUNTRY_ID, '[^;]+', 1, levels.lvl)) AS COUNTRY_ID_2
FROM table_study csCOUNTRY,
(select level lvl
from dual
connect by level <= length (REGEXP_REPLACE(COUNTRY_ID, '[^;]+'))) levels