从包含 NULL 的列表中选择单个值的正则表达式
问题:
REGEXP_SUBSTR () 未能检索到当存在空值时,逗号分隔列表中所需的第 n 个值。当值为 null 时,它将返回下一个非空值作为第 n 次出现。
解决方案:
要解决此问题,可以使用修改后的 REGEXP_SUBSTR() 表达式可以使用:
REGEXP_SUBSTR('1,,3,4,5', '(.*?)(,|$)', 1, 2, NULL, 1)
此表达式通过以下方式捕获所需的数据步骤:
可重用函数:
更简单、更多使用方便,这个修改后的 REGEXP_SUBSTR() 表达式可以封装在 PL/SQL 中函数:
FUNCTION GET_LIST_ELEMENT(string_in VARCHAR2, element_in NUMBER, delimiter_in VARCHAR2 DEFAULT ',') RETURN VARCHAR2 IS BEGIN RETURN REGEXP_SUBSTR(string_in, '(.*?)(\'||delimiter_in||'|$)', 1, element_in, NULL, 1); END GET_LIST_ELEMENT;
用法示例:
从列表 '123,222,,432,555' 中检索第 4 个元素:
select get_list_element('123,222,,432,555', 4) from dual;
以上是如何使用 REGEXP_SUBSTR() 从包含 NULL 的逗号分隔列表中可靠地提取特定值?的详细内容。更多信息请关注PHP中文网其他相关文章!