与mysql中的case语句连接

时间:2012-09-12 19:16:17

标签: mysql mysqlconnection

我想用sql查询输出生成.sql文件。我在sql中使用concat语句执行此操作。我在一些查询中使用case语句这对我来说是个问题。

select concat('insert into x values(',CASE a when B then 'Book' else 'NONE' end , ') on duplicate key update B = values(B)') from author;

select 'insert into x values('+CASE a when B then 'Book' else 'NONE' end +') on duplicate key update B = values(B)' from author;

它也不起作用,因为在mysql +中只用于添加数字而不是字符串。

有没有办法做到这一点?

1 个答案:

答案 0 :(得分:0)

第一个版本的问题是字符串中的内容引用。例如,您希望您的字符串包含“'Book'”

select concat('insert into x values(',
               (CASE a when 'B' then '''Book''' else '''NONE''' end) ,
              ') on duplicate key update B = values(''B'')'
             )
from author;

我认为这引用了应该是的字符串。我猜A列是一个应该与'B'相比而不是B列的字符。