2012-03-28 8 views
2

SQLテーブルに完全な行をコピーする必要がありますが、コピーした行のMarketNameの末尾に「 - Copy」を追加してください。私は以下を持っています:SQLテーブルの行をコピーして同じテーブルに挿入し、名前の末尾に「-Copy」を追加する方法はありますか?

$CopyMarket = "INSERT INTO Markets (MarketName, Size) 
        (SELECT MarketName, Size) 
        FROM Markets 
        WHERE MarketID=$CopyID"; 

" - Copy"をMarketNameにどのように追加しますか?

すなわち:名前は「コロラド州は、」私はそれをコピーして、「コロラド・コピー」

おかげで、新しい行として挿入したいです。

答えて

4

MySQLのCONCAT関数を使用してデータを追加または追加します。また、標準SQLで動作します。

追加

$CopyMarket = "INSERT INTO Markets (MarketName, Size) 
       (SELECT CONCAT(MarketName, '-Copy'), Size) 
       FROM Markets 
       WHERE MarketID=$CopyID"; // Field-Copy 

前に付加

$CopyMarket = "INSERT INTO Markets (MarketName, Size) 
       (SELECT CONCAT('Copy-', MarketName), Size) 
       FROM Markets 
       WHERE MarketID=$CopyID"; // Copy-Field 

MySQL documentationから:

引数を連結した結果の文字列を返します。 1つ以上の引数を持つことができます。すべての引数が非バイナリ文字列の場合、結果は非バイナリ文字列になります。引数にバイナリ文字列が含まれている場合、結果はバイナリ文字列になります。数値の引数は、同等のバイナリ文字列形式に変換されます。あなたはそれを避けたい場合は、この例のように、明示的な型キャストを使用することができます。

SELECT CONCAT(CAST(int_col AS CHAR), char_col); 

CONCAT()いずれかの引数がNULLの場合はNULLを返します。引用符で囲まれた文字列については

mysql> SELECT CONCAT('My', 'S', 'QL'); 
    -> 'MySQL' 
mysql> SELECT CONCAT('My', NULL, 'QL'); 
    -> NULL 
mysql> SELECT CONCAT(14.3); 
    -> '14.3' 

、連結は、互いの隣に文字列を配置することによって行うことができます。

mysql> SELECT 'My' 'S' 'QL'; 
    -> 'MySQL' 
+0

すごいです!どうもありがとうございました。完璧に働いた。 – sneako

+0

@sneakoようこそ。 –

関連する問題