如何复制SQL表中的行,将其插入到同一个表中,并将“-Copy”附加到名称的末尾?

时间:2012-03-28 20:05:12

标签: php sql

我需要复制SQL表中的完整行,但在复制行的MarketName末尾添加“-Copy”。我有以下内容:

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

如何将“-Copy”附加到MarketName?

即:名称为“科罗拉多”,我想将其复制并插入新行作为“Colorado-Copy”

感谢。

1 个答案:

答案 0 :(得分: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

返回连接参数产生的字符串。可能有一个或多个参数。如果所有参数都是非二进制字符串,则结果为非二进制字符串。如果参数包含任何二进制字符串,则结果为二进制字符串。数字参数转换为其等效的二进制字符串形式;如果你想避免这种情况,可以使用显式类型转换,如下例所示:

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

如果任何参数为NULL,则CONCAT()返回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'