Decode y Concat
Saludos,
tengo que realizar una query, en la cual he de hacer una sentencia decode. El problema es, q lo q necesito serÃa, de forma resumida y abstraÃda, lo siguiente:
Si valor = a, concaternar a con ("_", b), ("_", c).
Resultado serÃa_ a_b_c.
Esto es sencillo, el problema surge en que aunque el valor sea a, a veces no hay b ni c (si hay b, sà hay c). Entonces queda: a__; Ahà está mi problema, cómo puedo quiar los guiones bajos? Hay que tener en cuenta que no puedo controlar cuando hay, o no hay, b y c, por tanto, aunque imagino que he de jugar con el decode, concat, y substr, no soy capaz de hacer que cuaje.
¿Alguien puede ayudarme?
tengo que realizar una query, en la cual he de hacer una sentencia decode. El problema es, q lo q necesito serÃa, de forma resumida y abstraÃda, lo siguiente:
Si valor = a, concaternar a con ("_", b), ("_", c).
Resultado serÃa_ a_b_c.
Esto es sencillo, el problema surge en que aunque el valor sea a, a veces no hay b ni c (si hay b, sà hay c). Entonces queda: a__; Ahà está mi problema, cómo puedo quiar los guiones bajos? Hay que tener en cuenta que no puedo controlar cuando hay, o no hay, b y c, por tanto, aunque imagino que he de jugar con el decode, concat, y substr, no soy capaz de hacer que cuaje.
¿Alguien puede ayudarme?
El decode no te arrojara el resultado correcto, asi que utiliza la funcion ltrim de la siguiente manera:
select rtrim(rtrim(A||'_'||B,'_')||'_'||C,'_')
from tabla
Lo que hace la funcion rtrim es eliminar parte de una cadena de caracteres tomando como referencia una subcadena. ejemplos:
rtrim('tech '); would return 'tech'
rtrim('tech ', ' '); would return 'tech'
rtrim('123000', '0'); would return '123'
rtrim('Tech123123', '123'); would return 'Tech'
rtrim('123Tech123', '123'); would return '123Tech'
rtrim('Techxyxzyyy', 'xyz'); would return 'Tech'
rtrim('Tech6372', '0123456789'); would return 'Tech'
te recomiendo que cuando tengas dudas sobre las funciones disponibles en oracle, entres a esta pagina:
http://techonthenet.com/oracle/functions/index.php
te va a servir muchisimo !!
select rtrim(rtrim(A||'_'||B,'_')||'_'||C,'_')
from tabla
Lo que hace la funcion rtrim es eliminar parte de una cadena de caracteres tomando como referencia una subcadena. ejemplos:
rtrim('tech '); would return 'tech'
rtrim('tech ', ' '); would return 'tech'
rtrim('123000', '0'); would return '123'
rtrim('Tech123123', '123'); would return 'Tech'
rtrim('123Tech123', '123'); would return '123Tech'
rtrim('Techxyxzyyy', 'xyz'); would return 'Tech'
rtrim('Tech6372', '0123456789'); would return 'Tech'
te recomiendo que cuando tengas dudas sobre las funciones disponibles en oracle, entres a esta pagina:
http://techonthenet.com/oracle/functions/index.php
te va a servir muchisimo !!