Ya no tienes que investigar más por internet ya que llegaste al espacio correcto, poseemos la respuesta que buscas pero sin complicarte.
Solución:
El uso de una combinación de SUBSTR, INSTR y NVL (para cadenas sin guión bajo) devolverá lo que desea:
SELECT NVL(SUBSTR('ABC_blah', 0, INSTR('ABC_blah', '_')-1), 'ABC_blah') AS output
FROM DUAL
Resultado:
output
------
ABC
Utilizar:
SELECT NVL(SUBSTR(t.column, 0, INSTR(t.column, '_')-1), t.column) AS output
FROM YOUR_TABLE t
Referencia:
- SUBSTR
- INSTRUCCIONES
Apéndice
Si usa Oracle10g+, puede usar expresiones regulares a través de REGEXP_SUBSTR.
Esto se puede hacer usando REGEXP_SUBSTR fácilmente.
Por favor use
REGEXP_SUBSTR('STRING_EXAMPLE','[^_]+',1,1)
donde STRING_EXAMPLE es tuyo string.
Tratar:
SELECT
REGEXP_SUBSTR('STRING_EXAMPLE','[^_]+',1,1)
from dual
Resolverá tu problema.
Debe obtener la posición del primer guión bajo (usando INSTR) y luego obtener la parte del string del 1er carácter a (pos-1) usando substr.
1 select 'ABC_blahblahblah' test_string,
2 instr('ABC_blahblahblah','_',1,1) position_underscore,
3 substr('ABC_blahblahblah',1,instr('ABC_blahblahblah','_',1,1)-1) result
4* from dual
SQL> /
TEST_STRING POSITION_UNDERSCORE RES
---------------- ------------------ ---
ABC_blahblahblah 4 ABC
Documentación de instrucciones
Documentación de suscripción
Si piensas que ha sido provechoso nuestro artículo, sería de mucha ayuda si lo compartes con más entusiastas de la programación así contrubuyes a difundir nuestro contenido.