绑定完请刷新页面
取消
刷新

分享好友

×
取消 复制
SAP HANA 字符串拆分
2022-05-07 15:26:23

在SAP HANA中没有内置类似Oracle的 split() 字符串拆分函数,需要自行写存储过程来实现,本文介绍了实现的一种方式。

思路是创建一个存储过程,该存储过程有两个输入参数,分别是【待拆分字符串】和【拆分符号】,根据符号对字符串进行拆分,与split函数类似。

例如:'A,B,C' 和 ',' 。

本程序较为简单,详细逻辑可以参考代码的注释:

    CREATE PROCEDURE "SCHEMA_NAME"."PROC_NAME" (TEXT nvarchar(2000),SYMBOL nvarchar(10)) 
    -- 输入参数,TEXT为待拆分字符串,SYMBOL为拆分符号,例如TEXT = '1,2,3',SYMBOL = ','
    LANGUAGE SQLSCRIPT
    SQL SECURITY INVOKER
    --DEFAULT SCHEMA <default_schema_name>
    READS SQL DATA AS
    BEGIN
    declare _items nvarchar(200) ARRAY; -- 创建数组变量,用于存放拆分后的字符串
    declare _text nvarchar(2000); -- 创建字符串变量,用于存放拆分前和每次拆分后剩余的字符串
    declare _index integer; --创建int变量,用于计数器
    _text := :TEXT; --获取输入的待拆分字符串参数
    _index := 1; -- 计数器


    WHILE LOCATE(:_text,SYMBOL) > DO -- 当输入的字符串中,能够查找到拆分符号时,进入循环
    _items[:_index] := SUBSTR_BEFORE(:_text,SYMBOL); -- 查找待拆分字符串中,在拆分符号前的字符,放入数组
    _text := SUBSTR_AFTER(:_text,SYMBOL); -- 将待拆分字符串中中,拆分符号后的字符放入 _text 变量
    _index := :_index + 1; -- 计数器 + 1
    END WHILE;
    _items[:_index] := :_text; -- 循环结束将后一个拆分符号后的字符放入数组


    rst = UNNEST(:_items) AS ("items"); -- 将数组转换为临时表
    SELECT * FROM :rst; -- 输出结果
    END;

    测试调用一下:

    在实际使用时可能根据需要调整输出结果的格式。

    来源 https://www.modb.pro/db/375200

    分享好友

    分享这个小栈给你的朋友们,一起进步吧。

    SAP HANA
    创建时间:2022-03-04 16:28:44
    SAP HANA
    展开
    订阅须知

    • 所有用户可根据关注领域订阅专区或所有专区

    • 付费订阅:虚拟交易,一经交易不退款;若特殊情况,可3日内客服咨询

    • 专区发布评论属默认订阅所评论专区(除付费小栈外)

    技术专家

    查看更多
    • itt0918
      专家
    戳我,来吐槽~