将视图从Oracle传输到MySQL DB时出错。

问题描述 投票:-1回答:1

我正在将别人的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) "附近应该使用的正确语法。

如何才能正确地转置?

mysql oracle porting
1个回答
0
投票

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
© www.soinside.com 2019 - 2024. All rights reserved.