2012-03-28 18 views
2

我需要在SQL表中複製整行,但在複製行的MarketName的末尾添加「-Copy」。我有以下內容:如何複製SQL表中的行,將其插入到同一個表中,並在名稱末尾追加「-Copy」?

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

如何在MarketName上附加「-Copy」?

即:名稱是「科羅拉多州,」我想將它複製並插入一個新行的「科羅拉多複製」

感謝。

回答

4

使用CONCAT函數從MySQL追加或預先加載數據。也適用於標準的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

返回從串聯參數產生的字符串。可能有一個或多個參數。如果所有參數都是非二進制字符串,則結果是非二進制字符串。如果參數包含任何二進制字符串,則結果是二進制字符串。一個數字參數被轉換爲它的等價二進制字符串形式;如果你想避免這種情況,你可以使用顯式類型轉換,如下面的例子:

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 2012-03-28 22:35:57

+0

@sneako您的歡迎。 – 2012-03-29 13:01:29

相關問題