我需要复制SQL表中的完整行,但在复制行的MarketName末尾添加“-Copy”。我有以下内容:
$CopyMarket = "INSERT INTO Markets (MarketName, Size)
(SELECT MarketName, Size)
FROM Markets
WHERE MarketID=$CopyID";
如何将“-Copy”附加到MarketName?
即:名称为“科罗拉多”,我想将其复制并插入新行作为“Colorado-Copy”
感谢。
答案 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
返回连接参数产生的字符串。可能有一个或多个参数。如果所有参数都是非二进制字符串,则结果为非二进制字符串。如果参数包含任何二进制字符串,则结果为二进制字符串。数字参数转换为其等效的二进制字符串形式;如果你想避免这种情况,可以使用显式类型转换,如下例所示:
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'