INSERT INTO SELECT,复制值+'string'

时间:2010-09-16 13:27:06

标签: sql mysql

我需要复制一行。
复制行,我需要更改值,此值+'复制' 我做了这个sql ..但它不起作用..

INSERT INTO prizes_i18n (
  lang_id
  , translation_name
  , translation_desc
  , name
  , lang_path)
SELECT  prizes_s.lang_id
        , prizes_s.translation_name +  'copy'
        , prizes_s.translation_desc
        , prizes_s.name
        , prizes_s.lang_path   
FROM    prizes_i18n prizes_s 
WHERE   prizes_s.lang_id = 637; 

没有+'复制'它的作品。 像这样prizes_s.translation_name + 'copyy',但它不起作用。

3 个答案:

答案 0 :(得分:10)

this previous question你使用MySQL?如果是这样,请使用concat进行字符串连接。

SELECT 'foo' + 'bar' ...

在MySQL中返回0,这将解释您所看到的双打错误。

INSERT INTO  prizes_i18n (lang_id, translation_name, translation_desc, 
                          name, lang_path)
SELECT  prizes_s.lang_id,
    concat(prizes_s.translation_name, 'copy'),    
    prizes_s.translation_desc, prizes_s.name, prizes_s.lang_path  
FROM prizes_i18n prizes_s WHERE prizes_s.lang_id = 637;

答案 1 :(得分:1)

随机猜测......

prizes_s.translation_name + ' Copy'对于translation_name来说太长了,您会收到string or binary data would be truncated错误?

是SQL Server吗?是translation_name char还是varchar

答案 2 :(得分:1)

INSERT INTO prizes_i18n
(LANG_ID,translation_name,translation_desc,名称,lang_path) 选择 prizes_s.lang_id ,concat(prizes_s.translation_name,'copy') ,prizes_s.translation_desc ,prizes_s.name ,prizes_s.lang_path
从 prizes_s WHERE prizes_s.lang_id = 637;

我认为,在你的FROM子句中,表prizes_i18n是不必要的。