1

Temat: Zmiana wartości podczas select "w locie"

1)  -----------------------------------------------

select 'asd' || '' || '123'

-> ok, mam wiersz: 'asd123'

ale:

select 'asd' || null || '123'

-> nie mam ani jednego wiersza

próbowałem:

select 'asd' || text(null) || '123'

-> ale też nie mam wiersza.

Jest jakiś sposób żeby to zrobić?

1)  -----------------------------------------------


2)  -----------------------------------------------

Czy można w jakiś sposób:

select coś_tam 2;

abym w wyniku dostał wiersz z dwójką zamienioną na string np:
-> "dwa koty"

2)  -----------------------------------------------

2

Odp: Zmiana wartości podczas select "w locie"

Jak zauważyłeś null to nie to samo co ''. Nie za bardzo rozumiem po co Ci ta konkatenacja z nullem.

3

Odp: Zmiana wartości podczas select "w locie"

Ad 1 Musisz reagować na wartość null i zamienić ją na pusty ciąg można to zrobić tak:
select 'asd' || coalesce(null,'') || '123'
lub uzywając funkcji case odpowiednik IF
select 'asd' || case when pole is null then '' else pole end || '123' from (select null::varchar as pole) d

Ad 2 tu masz drugi sposób zastosowania funkcji case

select 'Widzę ' || case pole when 1 then 'jednego kota'
                             when 2 then 'dwa koty'
                             when 3 then 'trzy koty'
                             when 4 then 'cztery koty'
                             when 5 then 'pięć kotów'
                             when 6 then 'sześć kotów'
                             when 7 then 'siedem kotów'
                             when 8 then 'osiem kotów'
                             when 9 then 'dziewięć kotów'
                             else 'dużo kotów' end||' i burka w łatki' as pole_tekstowe
        ,pole
from generate_series(1,10,1) pole

4

Odp: Zmiana wartości podczas select "w locie"

Super - działa - o to mi chodziło :-)