3

データベースから顧客リストを取得する必要がありますが、2 番目の住所フィールドが空の場合は、[None Provided] というテキストを表示したいと考えています。これが私のクエリです:

    select concat(first_name, " ", last_name) as CustomerName, address, 
    address2, postal_code 
    from customer
    inner join address 
    using (address_id);

address2 が空白の場合、「提供なし」と表示したい。それ、どうやったら出来るの?答えはとてもシンプルだと思いますが、私は頭がおならをしていて、どこにも答えが見つかりません.

わかりました、これは私が最終的に行ったものです:

    case when address2=" " or address2 is null then 'None Provided' 
    else address2 end as address2,

これを達成するためのより良い方法はありますか?

4

4 に答える 4

6

次を使用できますCASE

select concat(first_name, " ", last_name) as CustomerName, 
   address, 
   case when address2 is null then 'None Provided' else address2 end as address2, 
   postal_code 
from customer
inner join address 
using (address_id);

またはさらに良いCOALESCE

select concat(first_name, " ", last_name) as CustomerName, 
   address, 
   COALESCE(address2,'None Provided') as address2, 
   postal_code 
from customer
inner join address 
using (address_id);

データに空の文字列または null が含まれている場合は、次の使用を検討します。

select concat(first_name, " ", last_name) as CustomerName, 
   address, 
   case 
     when address2 is null or address2 = '' 
     then 'None Provided' 
     else address2 end as address2, 
   postal_code 
from customer
inner join address 
using (address_id);
于 2013-03-05T18:28:10.383 に答える
3

組み込みCOALESCE関数を使用してこれを実現できます。

リスト内の最初の非 NULL 値を返します。非 NULL 値がない場合は NULL を返します。

select concat(first_name, " ", last_name) as CustomerName, address, 
COALESCE(address2, 'None provided') as address2, postal_code 
from customer
inner join address 
using (address_id);
于 2013-03-05T18:28:17.500 に答える
0
select concat(first_name, " ", last_name) as CustomerName, address, 
    COALESCE(address2,'none provided') as address2, postal_code 
    from customer
    inner join address 
    using (address_id);
于 2013-03-05T18:28:35.273 に答える
0

COALESCEを使用...

select concat(first_name, " ", last_name) as CustomerName, address, COALESCE(address2, 'None provided') as address2, postal_code from customer inner join address using (address_id);

COALESCE は、リスト内の最初の非 NULL 値を返します

于 2013-03-05T18:33:48.477 に答える