我有一张桌子:
CREATE TABLE cust (
cust_id NOT NULL,
cust_name NOT NULL,
address NULL
);
我必须将这些行插入另一个表中:
CREATE TABLE 1cust_det (
cust_id NOT NULL,
cust_name NOT NULL,
address NOT NULL
);
不幸的是cust.address
列包含NULL值。我想使用游标将这些行从cust
插入1cust_det
。我该怎么办?
答案 0 :(得分:2)
INSERT INTO
cust_det
SELECT
cust_id,
cust_name,
COALESCE(address, 'UNKNOWN')
FROM
cust
答案 1 :(得分:1)
如果您有权更改目标表,只需在列中添加默认值。
CREATE TABLE 1cust_det (
cust_id NOT NULL,
cust_name NOT NULL,
address NOT NULL DEFAULT 'DEFAULT_VALUE');
或者如果你可以编辑现有的目的地表而且它没有下垂
ALTER TABLE 1cust_det
ALTER address SET DEFAULT 'DEFAULT_VALUE'
如果您无法控制目标表以向地址列添加默认值,则最简单的方法是在插入本身中使用case语句。在下面的示例中,您还可以使用ISNULL评估,但您也可能希望搜索空字符串。请尝试找到一种更好的插入方式而不是使用光标。
INSERT dbo.1cust_det
(cust_id,cust_name,[address])
SELECT cust_id,cust_name,
CASE
WHEN [address] IS NULL THEN 'some default value'
ELSE [address]
END AS [address]
FROM cust
答案 2 :(得分:0)
以上答案是正确的。您可能有另一个表可能具有cust_id的地址。加入该表以获取缺少的地址。我已经看到,在几乎所有数据库中,都会为每个客户存储地址。您必须获取表cust中地址为NULL的地址。