2010年8月11日水曜日

SQLに要注意

2010年8月11日
1.外部結合
Oracleでは(+)を使い、SQL2005以前は*=、=*を使いますが、SQL2005以後はサポートしませんので、INNER、LEFT、RIGHT、FULLしかサポートしない。
2.decode
Oracleではdecodeを使いますが、SQL Serverrではサポートしません、代わりにCASEを使う。
例:
SELECT
CompanyInfo.CompanyId,
CompanyInfo.CompanyName,
Contract.ContractContents,
CASE WHEN ChargeInfo.CompanyId IS NULL THEN '未記入' ELSE '担当者情報' END AS ChargeFlg
FROM CompanyInfo INNER JOIN
Contract ON CompanyInfo.ContractId = Contract.ContractId
LEFT JOIN
ChargeInfo ON CompanyInfo.CompanyId = ChargeInfo.CompanyId
WHERE (CompanyInfo.Del IS NULL) OR
(CompanyInfo.Del <> 1)

3.SQL Server 2005 からは、TOP 句の 件数指定部分にパラメータが使えます
DECLARE @cnt INT
SET @cnt = 2

SELECT TOP (@cnt) [No] FROM (
SELECT 1 AS [No]
UNION SELECT 2
UNION SELECT 3
UNION SELECT 4
UNION SELECT 5
) AS [TMP]

0 件のコメント:

コメントを投稿