, considere el siguiente escenario:
sql> seleccione Regexp_Substr ('1,2,3,4,5,6', '[^,]', 1, 2) datos de dual; D - 2 Esta consulta recupera con éxito el segundo valor no nulo ("2") de la lista usando la expresión regular [^,]. Sin embargo, cuando el segundo valor es nulo, la consulta devuelve el tercer elemento:
sql> seleccione REGEXP_SUBSTR ('1 ,, 3,4,5,6', '[^,]', 1, 2 ) datos de dual; D - 3
para abordar este problema, se necesita una regex más flexible para permitir caracteres opcionales:
SQL> select REGEXP_SUBSTR('1,2,3,4,5,6', '[^,] ', 1, 2) data from dual; D - 2
Sin embargo, esta regex también falla para los números más allá del nulo.
SQL> select REGEXP_SUBSTR('1,,3,4,5,6', '[^,] ', 1, 2) data from dual; D - 3
regex_substr ('1, 3, 3, 3, 3, 3, 4,5 ',' (.*?) (, | $) ', 1, 2, nulo, 1)
SQL> select REGEXP_SUBSTR('1,,3,4,5,6', '[^,]*', 1, 4) data from dual; D - 3
data ----
para encapsular esta solución en una función reutilizable, considere el siguiente código:
REGEX_SUBSTR('1,,3,4,5', '(.*?)(,|$)', 1, 2, NULL, 1)
Esta función se puede llamar así:
Data ----
independientemente de los posibles nulls o el Seleccionando un elemento específico, esta solución proporciona un método robusto y elegante para extraer valores de listas separadas por comas en Oracle SQL.
Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.
Copyright© 2022 湘ICP备2022001581号-3