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


How to copy a row in an SQL table, insert it into the same table, and append "-Copy" to the end of the name?

我需要在SQL表中复制一整行,但在复制行的MarketName末尾添加"-copy"。我有以下内容:

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

如何将"-Copy"附加到MarketName?

ie:名字是"Colorado",我想把它复制并作为"Colorado copy"插入新行

谢谢。

使用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文档:

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

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'