我正在编写一个程序来打印出数千行(MySQL)SQL 指令,以异步时间发送到数据库服务器。每组 SQL 指令都将通过 *nix 管道重定向保存到文件中。
我面临的问题是关于字段的NULL
值char *
。如果有一个
printf ( "\"%s\" ", foo_field);
和 foo_field 可能是也可能不是NULL
。
MySQL 需要接收一个 plain NULL
,而不是 a "NULL"
,所以我必须在有值的时候去掉双引号NULL
。当值不是NULL
时,必须用双引号括起来。
对于我展示的情况,我可以放置 aif then
以便参数为%s
ifNULL
或\"%s\"
if not NULL
。
但是如果我们考虑一个有 20 个字段的 SQL 行,那么这样做就不是很好了。我怎样才能做到这一点?