【问题标题】:Concatenation with case statement in mysql在mysql中与case语句连接
【发布时间】:2012-09-12 19:16:17
【问题描述】:

我想生成带有 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 + 中只用于添加数字而不是用于字符串。

有没有办法做到这一点?

【问题讨论】:

    标签: mysql mysqlconnection


    【解决方案1】:

    第一个版本的问题是字符串中事物的引号。例如,您希望您的字符串包含“'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 列进行比较的字符。

    【讨论】:

    • 非常感谢。我试过了,在谷歌搜索我没有找到解决方案。我很烦恼并在这里发帖。我有一个解决方案。
    猜你喜欢
    • 2017-04-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-02
    • 1970-01-01
    • 2016-07-31
    • 2013-02-22
    相关资源
    最近更新 更多