三個常見開發情境的實用技巧:
在 SSMS 資料表格檢視中:
''。<NULL> → 為 NULL 值。查詢語法不同:
-- 找空字串
SELECT * FROM tbl WHERE col = ''
-- 找 NULL (必須用 IS NULL)
SELECT * FROM tbl WHERE col IS NULL
陷阱:WHERE col = '' 找不到 NULL;WHERE col IS NULL 找不到空字串。更新時同理。
預設停用 xp_cmdshell。啟用方式:
或用 T-SQL (需 sysadmin):
EXEC sp_configure 'show advanced options', 1; RECONFIGURE;
EXEC sp_configure 'xp_cmdshell', 1; RECONFIGURE;
錯誤寫法 (子查詢可能因 JOIN 產生重複列):
UPDATE TableA
SET date = (SELECT b.date FROM TableA a, TableB b WHERE a.id = b.id)
-- 子查詢若回傳 >1 列會報錯 "Subquery returned more than 1 value"
正確寫法 (相關子查詢,保證單值):
UPDATE TableA
SET date = (SELECT b.date FROM TableB b WHERE b.id = TableA.id)
-- 每個 TableA 列只對應一個 TableB 列
或用 JOIN 更新 (SQL Server 支援):
UPDATE a
SET a.date = b.date
FROM TableA a
INNER JOIN TableB b ON a.id = b.id