1

我想用 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 + 中仅用于添加数字而不用于字符串。

有没有办法做到这一点?

4

1 回答 1

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列比较的字符。

于 2012-09-12T19:23:27.300 回答