【问题标题】:Partial copy of table and insert values at same time?表的部分副本和同时插入值?
【发布时间】:2013-04-26 19:49:17
【问题描述】:

所以这将是一个奇怪的问题,但我会尽力解释它,以帮助任何试图在这里帮助我的人......

我遇到了一种情况,我试图将数据从一个数据库复制到另一个数据库到类似的表,但是有一个细微的差别,这会产生很大的不同。 db1.table1 允许 col3 中的 null 值,实际上确实有许多具有空值的行,但 db2.table1 不允许 col3 中的 null 值,但我仍然需要将这些值复制过来。此外,db1.table1.col3GUID,而 db2.table1.col3VARCHAR,这是问题的一部分。如果db1.table1.col3 不是GUID 类型,我只需转到UPDATE 列,其中包含我需要在db2.table1.col3 中插入的文本。

所以,总结一下:我正在寻找一种方法 INSERT INTO db2.table1 (col1, col2, col3...) SELECT col1, col2, col3... FROM db1.table1 但在 col3 为空的地方,我需要插入 text/varchar 以使其不为空。

有没有比建立一个任何人都知道的临时表更简单的方法来做到这一点?

【问题讨论】:

    标签: sql sql-server-2008 select ssms


    【解决方案1】:

    将 COALESCE 或 ISNULL 与您想要的替换文本一起使用

    例如ISNULL(Col3, 'Sometext')

    对于 GUID,您可以使用 NEWID() 函数,因为您无法将常规文本插入到唯一标识符数据类型中

    NEWID() 函数返回一个 GUID....例如

    SELECT NEWID()
    

    26C064EF-0AB6-4DBE-91B3-C2EE40DE7AD6

    【讨论】:

    • 我不是 100% 确定你所说的关于 NEWID() 的最后一部分是什么意思。如果这不是要求太多,你能给我举个例子吗?
    • 运行这个SELECT NEWID()
    • 哦,所以如果我理解正确,你建议我用随机 NEWID 填写 db1.table1.col3 以允许我复制,然后在复制后执行 UPDATE 插入我想要的文字?
    • 我的意思是你不能用唯一标识符数据类型来更新列,如果我理解正确的话,如果它是一个常规的 varchar(36) 那么你可以更新/插入任何适合
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-23
    相关资源
    最近更新 更多