我尝试从数据库中的内容生成SQL语句,基本上是通过生成INSERT语句将数据从一个数据库迁移到另一个数据库。
示例表t1:
c1 c2
r1 'a' NULL
r2 'b' 'c'
select 'INSERT INTO t2 (c1, c2) VALUES (''' + c1 + ''', ''' + c2 + ''')' from t1
我希望输出:
INSERT INTO t2 (c1, c2) VALUES ('a', NULL)
INSERT INTO t2 (c1, c2) VALUES ('b', 'c')
但是第一个输出结果是NULL,我尝试了各种版本的ISNULL()
和其他类似的方法来得到我想要的结果,但是没有找到有效的解决方案。
现在我使用ISNULL(c2, 'REPLACEWITHNULL')
,在语句生成后执行搜索和替换,但是如果可能的话,我希望删除第二步。
---------------下面的解决方案! -------------
一旦我从DouadyRabbit那里得到了解决方案,我想到了另一个解决方案,不使用CASE语句,这是一个更紧凑的解决方案:
+ IIF(c1 IS NULL, 'NULL', '''' + c1 + '''') +
非常感谢DouadyRabbit!
1条答案
按热度按时间5vf7fwbs1#
有更好的方法来迁移数据库,但是你必须有一个合理的理由来这样做。下面的代码应该会对你有所帮助。