SAS EG是否有可用于数值型数据的类LIKE运算符?
SAS EG中针对数值型数据实现类似LIKE的匹配方法
SAS 原生的LIKE运算符仅支持字符型变量,直接用在数值型变量上会触发错误。要实现对数值型数据的模式匹配(比如你例子里的前缀匹配),可以用以下几种实用方法:
转字符后用LIKE匹配
用PUT函数把数值型变量转换成字符型,再用LIKE做匹配,示例代码:WHERE PUT(t1.REGNSKKD_R, BEST12.) LIKE '302%';注意选择合适的格式(比如
BEST12.),确保转换后的字符完整保留原数值的所有位数,避免截断。用数值运算实现前缀匹配
如果是固定位数的前缀匹配(比如例子里的3位前缀),可以通过除法取整来判断,效率比转字符更高。比如数值是6位的话:WHERE INT(t1.REGNSKKD_R / 1000) = 302;如果数值位数不固定,可以先计算位数再做运算:
WHERE INT(t1.REGNSKKD_R / 10**(LENGTH(STRIP(PUT(t1.REGNSKKD_R, BEST12.)))-3)) = 302;正则函数PRXMATCH实现复杂匹配
用PRXMATCH函数结合正则表达式,先把数值转成字符再匹配,支持更复杂的模式,比如前缀、中间包含特定数字等场景:WHERE PRXMATCH('/^302/', PUT(t1.REGNSKKD_R, BEST12.)) > 0;
内容的提问来源于stack exchange,提问作者Christoffer
相关产品推荐
相关产品推荐

