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 --- 列:状态
- 考我
- 考他
- ID 1237 测试完成
- 测试她
- ID 928162 测试完成
- ID 991 测试完成
结果应该是
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每行 %'。
附加信息:
- 不仅需要协调“测试已完成”字符串,还需要协调其他一些字符串。因此,我需要在此特定列“Status”中多次使用替换语句
- "Test is done" 语句不是 1:1 table 中的另一个语句,因此不能以任何方式使用其他语句来执行此操作:-)
不确定以这种方式创建 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 部署完成
- 部署开发
我在 SAP HANA 上有一些 tables 和“创建列 table”以组合多个“原始 tables”,并且需要替换新的一列中的字符串创建 table。 Table名称“Testsubject_status”列名称“STATUS”。 我需要替换字符串的原因是为了在特定条目上获得统一的措辞。 通过以下示例,希望更清楚我的意思:
Table 名称:Testsubject_status --- 列:状态
- 考我
- 考他
- ID 1237 测试完成
- 测试她
- ID 928162 测试完成
- ID 991 测试完成
结果应该是
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每行 %'。
附加信息:
- 不仅需要协调“测试已完成”字符串,还需要协调其他一些字符串。因此,我需要在此特定列“Status”中多次使用替换语句
- "Test is done" 语句不是 1:1 table 中的另一个语句,因此不能以任何方式使用其他语句来执行此操作:-)
不确定以这种方式创建 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 部署完成
- 部署开发