我有2个表,如下所示,并相应地从ftable
将数据插入f_table
。如果field_3
存在,我想将field3
插入field_3
,否则将field_4
插入field3
。
我该怎么做?非常感谢任何回复。
CREATE TABLE ftable
(
field1 int null,
field2 int null,
field3 char(1)
);
CREATE TABLE f_table
(
field_1 int null,
field_2 int null,
field_3 char(1),
field_4 char(1)
);
INSERT INTO ftable (field1, field2, field3)
SELECT (field_1, field_2, field_3)
FROM f_table;
答案 0 :(得分:3)
如果field_3
存在,则不确定的真正含义 - 因为它是表格的一部分,总是列存在......
猜测你可能意味着:如果它是NOT NULL
- 在这种情况下,请使用此CASE
声明:
INSERT INTO ftable (field1, field2, field3)
SELECT
field_1, field_2,
CASE
WHEN field_3 IS NOT NULL THEN field_3
ELSE field_4
END
FROM f_table;
更新:根据w0lf的建议,你也可以使用:
INSERT INTO ftable (field1, field2, field3)
SELECT
field_1, field_2,
ISNULL(field_3, field_4)
FROM f_table;
使它更紧凑 - 但在我看来,它的可读性稍差。但这样可以正常工作 - 如果field_3
为NULL,则会插入field_4
。
答案 1 :(得分:1)
假设您的意思是field_3
为NULL
,这是一个使用COALESCE
的好地方:
INSERT INTO ftable (field1, field2, field3)
SELECT field_1, field_2, COALESCE(field_3,field_4)
FROM f_table;
返回其参数中的第一个非空表达式。