SAP HANA数据库字符串拆分后比较的WHERE条件写法问询
SAP HANA 对应筛选逻辑实现说明
你写的语法不能直接在SAP HANA中运行,需要做几处调整,具体如下:
核心调整点
- 函数名替换:SAP HANA 没有内置
SPLIT函数,拆分字符串需要使用官方提供的SPLIT_STRING函数 - 数组下标规则:
SPLIT_STRING返回的数组下标从1开始计数,如果你要取拆分后的第二个元素,对应下标为2而非0起始规则下的1 - 类型转换要求:拆分得到的元素默认是字符串格式,必须转换为和EAU一致的数值类型才能做大小比较,否则会触发类型不匹配报错
- 筛选子句选择:你是对分组聚合后的结果做筛选,不能使用
WHERE子句(WHERE只用于分组前的原始数据筛选),需要替换为HAVING子句
完整参考SQL
假设你分组拼接QTY用的是SAP HANA的字符串聚合函数STRING_AGG,完整语句示例如下:
SELECT MATNR, MAX(EAU) AS EAU, -- 同MATNR下EAU唯一的话,用MAX/MIN/ANY_VALUE都可以 STRING_AGG(QTY, ', ') AS QTY FROM 你的原始数据表名 GROUP BY MATNR -- 筛选逻辑:EAU 大于拆分后第二个QTY值 HAVING MAX(EAU) > TO_DECIMAL(SPLIT_STRING(STRING_AGG(QTY, ', '), ', ')[2])
额外注意事项
如果存在部分分组拼接后QTY拆分不足2个元素的情况,取下标2会返回NULL,这类记录会被自动排除在结果外,如果需要兼容这类场景可以搭配COALESCE函数给默认值处理。
内容的提问来源于stack exchange,提问作者YuTing
相关产品推荐
相关产品推荐

