SAP HANA图形化计算视图中基于正则校验生成合同号计算列的实现咨询
解决SAP HANA图形化计算视图中合同号校验的轻量方案
嘿,针对你提到的合同号校验需求,完全不用绕到表函数那么复杂——直接在图形化计算视图里用内置字符串函数组合实现模式匹配就可以了,步骤简单还不用额外创建数据库对象,完美适配你的简单场景!
核心思路:用基础字符串函数模拟正则匹配
因为HANA列引擎不支持正则函数,但你的合同号模式(\d{3}-\d{7}-\d{3})规则很明确,我们可以用LENGTH、SUBSTRING、IS_NUMERIC这些基础函数组合出等价的校验逻辑:
- 合同号总长度必须是15位(3位数字+横杠+7位数字+横杠+3位数字)
- 第4位和第12位必须是
-分隔符 - 三段数字部分必须是纯数字
具体实现步骤
- 打开你的图形化计算视图,找到数据源节点,右键选择添加计算列(或者在视图的“计算列”区域新建)
- 给计算列命名(比如
校验后合同号),然后在表达式编辑器里输入以下CASE语句(记得替换成你实际的合同号列名):CASE WHEN LENGTH("合同号") = 15 AND SUBSTRING("合同号", 4, 1) = '-' AND SUBSTRING("合同号", 12, 1) = '-' AND IS_NUMERIC(SUBSTRING("合同号", 1, 3)) = 1 AND IS_NUMERIC(SUBSTRING("合同号", 5, 7)) = 1 AND IS_NUMERIC(SUBSTRING("合同号", 13, 3)) = 1 THEN "合同号" ELSE 'NA' END - 保存并激活计算视图,之后测试数据就能看到效果:符合格式的合同号保留原值,不符合的则显示
NA
额外说明
如果你的合同号存在前后空格这类特殊情况,可以在表达式里先加个TRIM("合同号")处理,比如把LENGTH("合同号")改成LENGTH(TRIM("合同号")),同时后续的SUBSTRING也替换为TRIM后的列,确保校验准确。
这个方案完全在图形化界面内完成,比表函数简洁太多,刚好适配你的简单校验需求~
内容的提问来源于stack exchange,提问作者KingRaidi
相关产品推荐
相关产品推荐

