我想用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 +中只用于添加数字而不是字符串。
有没有办法做到这一点?
答案 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列的字符。