SQL - SAP HANA - REPLACE_REGEXPR 列 table

SQL - SAP HANA - REPLACE_REGEXPR in Column table

我在 SAP HANA 上有一些 tables 和“创建列 table”以组合多个“原始 tables”,并且需要替换新的一列中的字符串创建 table。 Table名称“Testsubject_status”列名称“STATUS”。 我需要替换字符串的原因是为了在特定条目上获得统一的措辞。 通过以下示例,希望更清楚我的意思:

Table 名称:Testsubject_status --- 列:状态

结果应该是

Table 名称:Testsubject_status --- 列:状态

我尝试了以下方法:

CREATE COLUMN TABLE SCHEMATTT.Testsubject_status AS (
    Select
        Table1.Person AS “Person”,
        Table1.Vers AS “Vers”,
        Table2.Flnr AS “Flnr”,
        Table3.Status AS “Status”
FROM 
    SCHEMATTT.Table1, SCHEMATTT.Table2, SCHEMATTT.Table3 
WHERE SCHEMATTT.Table1.Person = SCHEMATTT.Table2.Person
AND SCHEMATTT.Table2.Flnr = SCHEMATTT.Table3.Flnr


SELECT
REPLACE_REGEXPR (‘with the id \d{1,}’ IN ‘TEST with %’ WITH ‘’) “replace_regexpr”
FROM SCHEMATTT.Testsubject_status
);

正在创建 table。 Replace_Regexpr 语句只有在我不 运行 它与创建列 table 语句一起使用时才有效,然后只创建一个 table 一列和条目 'TEST with每行 %'。

附加信息:

不确定以这种方式创建 table 是否是最好的,但我想那是另一回事 

提前感谢您的意见!

这张图片是为了在评论中澄清:

@Mike,你能试试下面的 SQLScript 命令吗

CREATE COLUMN TABLE Testsubject_status2 AS (
Select
    Table1.Person AS "Person",
    Table1.Vers AS "Vers",
    Table2.Flnr AS "Flnr",
    Table3.Status AS "Status",
    REPLACE_REGEXPR ('test with the id [[:digit:]]* is done' FLAG 'i' IN Table3.STATUS WITH 'Test is done') "replace_regexpr"
FROM 
   Table1, Table2, Table3 
WHERE Table1.Person = Table2.Person
AND Table2.Flnr = Table3.Flnr
);

这将生成具有以下示例数据的 table

请注意,如果给定条件匹配,则 STATUS 列将替换为静态文本。否则状态文本将保持原样

对于附加信息,我添加了以下表达式,但我不太喜欢它 也许有更好的解决方案

REPLACE_REGEXPR (
    '(test with the id|Deployment for the ID) [[:digit:]]* is (done|completed)' 
    FLAG 'i' 
    IN Table3.STATUS 
    WITH 
        case 
            when Table3.STATUS LIKE_REGEXPR('test') Flag 'i' then 'test is done' 
            when Table3.STATUS LIKE_REGEXPR('deploy') Flag 'i' then 'deployment is done' 
            else Table3.STATUS
        end 
)  as "replace_regexpr_ext"

您可以在 table 定义脚本中添加一个新的计算列

我假设您的 table 数据中有以下状态文本:

  • ID 234 部署完成
  • 部署开发