【问题标题】:regexp_replace vs regexp_substr and using moving data into many cells from one cellregexp_replace vs regexp_substr 并使用将数据从一个单元格移动到多个单元格
【发布时间】:2021-10-28 15:32:44
【问题描述】:

我不断收到 [Teradata Database] [9134] 输出超出缓冲区限制。

select 
MHKAUDITLOGINTERNALID as id, 
Cast(MHK_CONTENT as CLOB)as MHK_CONTENT 
from vcoreMEDHOK_MHK_Audit 
Where cast(AUDITDATETIME as Date) >= '2021/08/15' )
--- and id ='31181086' )
select ID, regexp_replace(Token, '<b>|<\/b>') -- trim everything up to '<b>' 
FROM TABLE (RegExp_Split_To_Table(t.id, t.MHK_CONTENT,'<BR/> *', 'i') -- split whenever '<\/b>' occurs 
RETURNS ( id BIGINT, TokenNum INT, Token VARCHAR(35000) CHARACTER SET LATIN)) AS dt 

有人知道如何解决这个问题吗? [Teradata Database] [9134] 输入超出缓冲区大小限制。

with t as
 (
   select MHKAUDITLOGINTERNALID  as id, cast(MHK_CONTENT as clob) as MHK_CONTENT
   from vcoreMEDHOK_MHK_Audit as ma
   Where cast(ma.AUDITDATETIME as Date) >= '2021/08/15'
   
)
SELECT
  DISTINCT id,  
  regexp_substr(MHK_CONTENT, '.*<b>\K.*') -- trim everything up to '<b>'
FROM TABLE (RegExp_Split_To_Table(t.ID, t.MHK_CONTENT, '<\/b>', 'i')
     RETURNS (ID BIGINT, tok_num INTEGER, 
MHK_CONTENT VARCHAR(100) CHARACTER SET LATIN)) AS t   ```

---[Teradata Database] [9134] Input exceeds the buffer size limit.

【问题讨论】:

    标签: input output buffer teradata limit


    【解决方案1】:

    根据您之前的问题扩展 SQL,这似乎是您想要的:

    with t as
     (
       select MHKAUDITLOGINTERNALID  as id, cast(MHK_CONTENT as clob) as MHK_CONTENT
       from vcoreMEDHOK_MHK_Audit as ma
       Where cast(ma.AUDITDATETIME as Date) >= '2021/08/15'
       -- Where ma.AUDITDATETIME >= DATE '2021-08-15'
       -- recommended to use DATE literals, the timestamp is here automatically converted to date  
       
    )
    
    select regexp_replace(Token, '<b>|<\/b>') -- remove tags
       ,dt.* 
    FROM TABLE (RegExp_Split_To_Table(t.id, t.MHK_CONTENT,'<BR\/> *', 'i') -- split whenever '<BR/>' occurs 
    RETURNS ( id INT, TokenNum INT,
             Token VARCHAR(32000) CHARACTER SET LATIN)
            ) AS dt                              
          
    

    关于错误:尝试将 size 令牌大小增加到最大。

    【讨论】:

    • [Teradata Database] [9134] 输出超出缓冲区限制。
    • 很难说没有细节:MHK_CONTENT 的 DDL 是多少,它的最大 CHAR_LENGTH 是多少?
    • VARCHAR(35000) 是使用 Teradata SQL。除此之外我一无所知。我正在使用视图。也删除了

      NoteID: 2289574
      Action: Add
      NoteType: Nurse Note
      Note:
    • 如果它是 VarChar(35000),它必须是 LATIN(UNICODE 限制为 32000)并且不需要转换为 CLOB。将令牌增加到VARCHAR(35000) CHARACTER SET LATIN
    • 您的数据只显示了
      。您必须准确显示它们是如何嵌套的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-22
    • 2012-08-04
    • 2018-03-15
    • 2018-03-26
    • 1970-01-01
    相关资源
    最近更新 更多