簡體   English   中英

SQL-SAP HANA-控制台內容太長-將一些代碼傳遞給過程?

[英]SQL - SAP HANA - Console Content to long - Pass some code to a procedure?

我的SAP HANA SQL控制台中有一個約1700行的SQL腳本。 我有很多行,因為我需要更改從一個“原始表”導入的一列中的很多條目。 關於此“更改行條目”問題更詳細描述重復的WHEN THEN代碼如下:

Create Column Table xxx
Select Distinct 
   aaa AS "aaa",
   bbb AS "bbb",
   ccc AS "ccc",
   CASE 
      WHEN importedColumn like 'xx123x' THEN REPLACE_REGEXPR ('xx123x' FLAG 'i' IN importedColumn WITH 'xxx')
      WHEN importedColumn like 'yy345y' THEN REPLACE_REGEXPR ('yy345y' FLAG 'i' IN importedColumn WITH 'yyy') 
      WHEN importedColumn like 'zzz345z' THEN REPLACE_REGEXPR ('zzz345z'FLAG 'i' IN importedColumn WITH 'zzzz') 
      etc.
      etc. 
      ELSE xxx 
   END AS replace_regexpr 
FROM...
WHERE...

(通常)可以正常工作。 問題是,我有太多不同的WHEN THEN語句(總是檢查這一列的條目並可能更改它們),以致我無法執行代碼了-> SQL console內容太大。 我可以以某種方式提取此case語句並將其存儲在過程或類似的東西中嗎? 我真的不知道該如何處理,因此我很樂意為您提供建議!

  • 注意:需要更改的列條目沒有任何通用模式,因此我無法對它們進行分組或類似的操作。 這意味着我需要很多WHEN THEN語句。

從這個問題和鏈接的問題中,我認為您只有一個REGEX規則,當且僅當找到特定模式時才應將其應用於輸入數據(通過LIKE運算符進行比較)。

我會將所有匹配的模式和替換規則放在單獨的表中,從而使維護,調試和SELECT語句更加容易:

create column table xxx (id int primary key
                       , "impColumn" nvarchar(4000)
);

create column table rules (id int primary key
                         , matcher nvarchar(4000)
                         , regex nvarchar(4000));       

insert into rules values (1, 'xx123x', 'xxx');
insert into rules values (2, 'yy345y', 'yyy');
insert into rules values (3, 'zzz345z', 'zzz');


insert into xxx values (1, 'xx123x');
insert into xxx values (2, 'yy345y');
insert into xxx values (3, 'zzz345z');

insert into xxx values (4, 'xx123xyy345y');
insert into xxx values (5, 'xx1zzz345zzzz345z23x');
insert into xxx values (6, 'xx123xyy345yzzz345z');

select
    x.*,
    r.*,
    REPLACE_REGEXPR (r.matcher
                    FLAG 'i' 
                    IN x."impColumn"  
                    WITH r.regex) as output
from 
    xxx x
    left outer join
    rules r
    on x."impColumn" like   r.matcher  ;

您可以將連接條件更改為x。“ impColumn”,例如'%'||。 r.matcher ||'%'

將所有匹配的規則應用於輸入行,但是請注意,這會為每個應用的規則生成一個輸出行,這可能不是您想要的。

沒有占位符的輸出如下所示:

在此處輸入圖片說明

您的示例SQL產生的結果幾乎相同。

至於SAP HANA Studio中的問題,我這是由於您嘗試運行的腳本文件的大小所致。 通過為HANA Studio編輯JRE VM內存,您可以避免此問題。

請檢查hdbstudio.ini並將VM參數設置為

  • -Xmx4096m
  • -Xms512m

並重新啟動HANA Studio。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM