2011-12-16 18 views
9

私は、複数のカラム値を1つのカラムに連結しなければならないPHPとMySQLアプリケーションを作成しています。concat()関数を使用していましたが、ヌル値を処理し、concat_ws()は結果を出力しません。 は、どのような私はこのようなOracleデータベースで達成することができる必要があります。MySQLクエリのConcat値

Select 'The Surname Is'||last_name from employees; 

私の問題は、私はMySQL..withoutは、上記の名前の関数を使用して、この同じ結果を得ることができる方法ですか?

答えて

24

CONCAT CONCATする:

SELECT 
    CONCAT('The Surname Is ', IFNULL(last_name, 'sadly not available')) 
FROM `employees` 
10

をまたNULL

SELECT 
CONCAT_WS(' ','The Surname Is',lastname) 
FROM `employees` 
6

@Minesh値の面倒をCONCAT_WS機能を使用することができます:CONCAT_WSはNULL値を '注意しません'。 ...上記の例で

CONCAT_WS("~",house.name,house.address,house.type) 

これを例示するために、もしhouse.addressNULLである期待どおりに返された結果は、ニートダブルチルダ(~~)を含有しないであろう。 1ティルダだけのティルダで区切られたリストになります。例えば「楽しいハウス〜の邸宅」

+1

CONCAT_WSと、セパレータなどの使用、空の文字列(一部の回は、あなたが空白を挿入wan't)、どこでその問題?それはあなたが何か他のことをしたいと思わない限り、きちんとした解決策です。 – CME64

+1

私はそれが悪いと思うのは、2つの異なるタスクを実行するためです。最初にそれは、偉大な、ありがとう、私が欲しかったものを連結する。空の文字列リスト項目を削除します。私はあなたにそれを依頼しませんでした。この関数はCONCAT_NN_WS()と呼ばれ、NNは "Not Nulls"の略です。 5つのものをリストに連結するように私のソフトウェアに頼んだら、5つのアイテムリストが必要です。私はソフトウェアが「ああ、ちょっと言って、私はビンを空にして、猫に餌を与え、週末にも彼女を招待するためにお母さんに電話してください」と言います。 –

+0

これは役に立つでしょう。 (他の目的のためにもこの方法を維持する)実装されている。 – CME64

0

少しトリック:それはそれは、セパレータだと一緒にそれを削除しない

CONCAT_WS('','The Surname Is:',lastname) 
FROM `employees`