首页 > 解决方案 > Teradata,将字段拆分为几行使用 STRTOK_SPLIT_TO_TABLE和 <\b> 语法错误

问题描述

标签: teradatastrtok

解决方案


您的语法混乱(您需要派生表或 CTE),STRTOK 拆分字符,而不是字符串(这些字符中的任何一个都会拆分,而不是序列'</b>')。

您需要 RegExp_split_to_table 和另一个 RegEx 来清理结果:

with t as
 (
   select id, CONTENT
   from Audit
)
select id, TokenNum
  ,regexp_substr(Token, '.*<b>\K.*') -- trim everything up to '<b>'
FROM TABLE (RegExp_Split_To_Table(t.id, t.content, '<\/b>', 'i') -- split whenever '<\/b>' occurs
     RETURNS ( id INT,
               TokenNum INT,
               Token VARCHAR(100) CHARACTER SET Unicode)
             ) AS dt
             

编辑:

关于9134错误:尝试增加结果TOKEN的长度。如果您的输入是 VarChar(35000),则它不能是 UNICODE -> 也更改为 LATIN。


推荐阅读