Creo que entiendo la duda de Daniel,  el quiere que por cada tupla del
resultado se llame una única vez a una función y a ese resultado poder
usarlo en mas de una proyección de columna y por ejemplo en el where y en
este caso con lo que indica Jairo no lo solucionaría.(* tampoco lo puede
resolver con lo que indica Anthony*)

El lun., 31 ago. 2020 a las 12:05, Jairo Graterón (<jgrate...@gmail.com>)
escribió:

> 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 (<
> asotolo...@gmail.com>) 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.) <desartec...@gmail.com> 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:juanjo.santama...@gmail.com]
>>> Enviado el: jueves, 27 de agosto de 2020 17:22
>>> Para: Diego
>>> CC: Fontana Daniel C (Desartec S.R.L.);
>>> pgsql-es-ayuda@lists.postgresql.org
>>> Asunto: Re: Duda con un select
>>>
>>>
>>> El jue., 27 ago. 2020 17:55, Diego <mrstephenam...@gmail.com> 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