189

2 つの文字列列がaありb、テーブル内にありますfoo

select a, b from fooa値と を返しますb。ただし、 and の連結はa機能bしません。私は試した :

select a || b from foo

select  a||', '||b from foo

コメントからの更新: 両方の列は typecharacter(2)です。

4

8 に答える 8

40

問題は値のヌルにありました。その場合、連結はヌルでは機能しません。解決策は次のとおりです。

SELECT coalesce(a, '') || coalesce(b, '') FROM foo;
于 2013-11-13T16:12:49.917 に答える
26

連結にはPostgreSQLのCONCAT関数を使用することをお勧めします

例:select CONCAT(first_name,last_name) from person where pid = 136

column_a || を使用している場合 ' ' || 2 列の連結のための column_b 。 column_a または column_b のいずれかの値が null の場合、クエリは null 値を返します。すべての場合に優先されるとは限りません..したがって、これの代わりに

||

使用する

CONCAT

それらのいずれかに値がある場合、関連する値を返します

于 2014-06-09T09:36:14.393 に答える
10

CONCAT 関数は、古い postgreSQL バージョンでは動作しないことがあります

CONCATを使用せずに問題を解決するために使用したものを参照してください

 u.first_name || ' ' || u.last_name as user,

または、使用することもできます

 "first_name" || ' ' || "last_name" as user,

2 番目のケースでは、first_name と last_name に二重引用符を使用しました

これが役立つことを願っています、ありがとう

于 2014-12-09T06:47:40.853 に答える
0

PHPのLaravelフレームワーク、 検索first_name、last_nameフィールドをフルネーム検索のように使用しています

|| の使用 symbol または concat_ws()、concat() メソッド

$names = str_replace(" ", "", $searchKey);                               
$customers = Customer::where('organization_id',$this->user->organization_id)
             ->where(function ($q) use ($searchKey, $names) {
                 $q->orWhere('phone_number', 'ilike', "%{$searchKey}%"); 
                 $q->orWhere('email', 'ilike', "%{$searchKey}%");
                 $q->orWhereRaw('(first_name || last_name) LIKE ? ', '%' . $names. '%');
    })->orderBy('created_at','desc')->paginate(20);

これは魅力的でした!!!

于 2018-06-25T08:17:47.217 に答える