sql 2008 尝试将不可为NULL的列的值设置为NULL
我有一个查询,在原来的SQL2000中执行没有问题,但换到SQL2008就提示:
尝试将不可为NULL的列的值设置为NULL。请大家帮我看一下:
SELECT A.001,A.002,A.003,B.007,B.008,C.002
FROM 表A as A
LEFT JOIN 表2 as B on A.013=B.001 AND A.014=B.002
LEFT JOIN 表3 as C on A.010=C.001
在网上找了一大圈,可能是因为A.013与A.014有null值的原因,我换成下面的也不行:
SELECT A.001,A.002,A.003,B.007,B.008,C.002
FROM 表A as A
LEFT JOIN 表2 as B on ISNULL(A.013,'')=B.001 AND ISNULL(A.014,'')=B.002
LEFT JOIN 表3 as C on A.010=C.001
但实际确实要取表A的全部内容,也就是说要用到LEFT JOIN的方式,执行时总会提示:尝试将不可为NULL的列的值设置为NULL
[解决办法]
ISNULL(A.013,'')=B.001 AND ISNULL(A.014,'')=B.002
条件语句里面,没见过这样写的..
[解决办法]
通过测试,在查询结果集上,可以为null,没有约束。
http://topic.csdn.net/u/20091207/11/ee1a5b2e-8776-4616-ae6b-d775e41c1449.html
CREATE TABLE TestNull
(
id INT NOT NULL,
NAME NVARCHAR(20) NOT null
)
INSERT INTO TestNull
SELECT '1','evan'
UNION ALL
SELECT '2','sam'
CREATE TABLE A
(
id INT ,
NAME NVARCHAR(20)
)
INSERT INTO A
SELECT '1',N'张三,李四'
UNION ALL
SELECT '2',N'王五'
UNION ALL
SELECT '2',N'马六,朱七'
SELECT * FROM A a
left JOIN TestNull t
ON a.ID=t.id
ID NAME id NAME
----------- ------------------------------------
1 张三,李四 1 evan
2 王五 2 sam
3 马六,朱七 NULL NULL
(3 row(s) affected)