您必须重组查询。如果要获得最佳或最大模式,请执行以下操作:
select a_val, b_val into vara_val, varb_val from (select NumberPattern , a_val, b_val, rank() over(order by length(NumberPattern) desc) ranking from DATA_TABLEwhere CALLNUM like NumberPattern || '%' ) where ranking = 1
这会将变量vara_val和varb_val分别设置为值2、2。或者,如果您也想获取该模式,只需声明另一个将保存该值的变量,然后将查询编辑为此:
select NumberPattern ,a_val, b_val into yournew_variable,vara_val, varb_val from (select NumberPattern , a_val, b_val, rank() over(order by length(NumberPattern) desc) ranking from DATA_TABLEwhere CALLNUM like NumberPattern || '%' ) where ranking = 1
这是一个简短的解释:我创建了一个子查询,该子查询由NumberPattern,a_val,b_val和根据其长度的NumberPattern的等级组成。这只会对您提供的CALLNUM参数上存在的模式进行排名。因此,例如,您获得了模式12345、1234,789,并将123456789传递给了CALLNUM参数,由于您的CALLNUM以12345和1234开头,而不是789,因此它将仅对模式12345和1234进行排名。排名为1的子查询中的NumberPattern,a_val和b_val



