业务中写SQL时碰到的很冷门的问题,大部分技术人员可能都不知道
①拼接字符串时,参数为null,+任何值都为null
如 SELECT 1+NULL
拼接是,套个ISNULL()
②子查询时,子表没有的字段会从主表取值
a表 知道
CREATE TABLE a
(
FID INT,
FName CHAR(10)
)
CREATE TABLE b
(
FName CHAR(10)
)
SELECT * FROM a
WHERE FID IN (SELECT FID FROM b)
SELECT * FROM dbo.a
LEFT JOIN dbo.b ON FID=FID
关联时,请带上表名或别名
③ 判断null 和其他不等时,无法判断,但再系统sql中不会报错,会过滤掉数据
SELECT NULL!=2
④top 参数化 +()就可
DECLARE @n int
SET @n=5
SELECT TOP (@n) * FROM a