Hola Daniel, puedes retornar dos valores como dice Anthony o usar
subconsultas

with T1 as
(select <https://www.postgresql.org/docs/11/static/sql-select.html>
'XXXZMMM1234567890123yyyy/mm/dd' as ls_numero)

select <https://www.postgresql.org/docs/11/static/sql-select.html>
substr 
<https://www.postgresql.org/docs/11/static/functions-string.html>(ls_numero,
8, 13), substr 
<https://www.postgresql.org/docs/11/static/functions-string.html>(ls_numero,
21, 10) from t1;


with T1 as
(select <https://www.postgresql.org/docs/11/static/sql-select.html>
f_articulo_get_precio(xxxxx) as ls_numero)

select <https://www.postgresql.org/docs/11/static/sql-select.html>
substr 
<https://www.postgresql.org/docs/11/static/functions-string.html>(ls_numero,
8, 13), substr 
<https://www.postgresql.org/docs/11/static/functions-string.html>(ls_numero,
21, 10) from t1;

El jue., 27 ago. 2020 a las 20:57, Anthony Sotolongo (<[email protected]>)
escribió:

> Hola Daniel, si tienes acceso a modificar esa función puedes definir dos
> parámetros de salida que retornen esos valores, y así la llamarías una sola
> vez.
>
>
> Saludos
>
> El jue., 27 de agosto de 2020 7:55 p. m., Fontana Daniel C (Desartec
> S.R.L.) <[email protected]> escribió:
>
>> perfecto, ahora imaginemos que '1234567890' es una funcion
>> f_articulo_get_precio( id_code ),
>> que devuelve en un string como el siguiente
>> 'XXXZMMM1234567890123yyyy/mm/dd' donde
>> 1234567890123 es el precio
>> yyyyy/mm/dd la fecha en que se cambio por ultima vez.
>> Como haria en este caso para obtener estos valores por separado?
>> sin llamar a la funcion 2 veces evitando sobrecargar la base?
>>
>> De: Juan José Santamaría Flecha [mailto:[email protected]]
>> Enviado el: jueves, 27 de agosto de 2020 17:22
>> Para: Diego
>> CC: Fontana Daniel C (Desartec S.R.L.);
>> [email protected]
>> Asunto: Re: Duda con un select
>>
>>
>> El jue., 27 ago. 2020 17:55, Diego <[email protected]> escribió:
>> El que falla es el ls_numero del substr asi te va a funcionar: select
>> '1234567890' as ls_numero, substr('1234567890', 3, 3);
>> Hay muchas formas de hacer algo equivalente, si necesitas hacer
>> referencia a la columna "ls_numero" puedes utilizar una consulta anidada:
>>
>> select substr(ls_numero, 3, 3) from
>> (select '1234567890' as ls_numero) as ls;
>>
>> Un saludo,
>>
>> Juan José Santamaría Flecha
>>
>>
>>
>>

Reply via email to