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 に答える