使用 Null 处理从逗号分隔列表中提取第 n 个值
当使用 REGEXP_SUBSTR() 从逗号中提取第 n 个值时 -分隔列表,处理空值可能具有挑战性。为此,需要对正则表达式进行修改。
原始表达式 REGEXP_SUBSTR('1,,3,4,5', '[^,] ', 1, 2) 返回第二次出现一个或多个非逗号字符。但是,当遇到 null 时,它会将其解释为新的非空值的开始,并返回第三项而不是预期的 null。
为了解决这个问题,表达式被修改为允许零或更多非逗号字符:REGEXP_SUBSTR('1,,3,4,5', '(.*?)(,|$)', 1, 2, NULL, 1)。它通过查找零个或多个后跟逗号或行尾的字符来标识所需的值,并仅返回第一个子组(所需的数据)。
此增强型表达式可以正确处理空值,返回如果第二项为空,则为 null。函数 GET_LIST_ELEMENT() 封装了此逻辑以便于重用:
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;
这种方法可以容纳空值并允许从列表中选择任何值。
以上是如何从逗号分隔的字符串中提取第 n 个值并处理空值?的详细内容。更多信息请关注PHP中文网其他相关文章!