Microsoft SQL Server

SQL Server : SQL

2022.05.02 null データの削除

特定の列が null のデータを削除するには is を使用します。= ではありません。

delete from TBL_A where COL_A is null

2022.04.27 非クラスター化インデックスの作成

非クラスター化インデックスを作成するには、次の SQL を実行します。

CREATE NONCLUSTERED INDEX [IDX_TBL_A] ON [dbo].TBL_A (COL_A, COL_B)

2022.04.17 タブ文字の検索

タブ文字 (\t) が含まれている文字列データを検出する SQL を作成しました。

select * from TBL_A
where COL_A like '%' + char(9) + '%'

重複レコードの id を取得

SQL Server データベースのあるテーブル中にキーが重複したレコードが存在することが判明しました。削除するためには、そのレコードの id が判明すると作業が容易です。そこで次のような SQL を作ってみました。

SELECT * FROM TBL_A WHERE (COL_A + CONVERT(NVARCHAR,COL_B)) IN (
SELECT COL_A + CONVERT(NVARCHAR, COL_B) FROM TBL_A
GROUP BY COL_A, COL_B
HAVING COUNT(*) > 1)
ORDER BY COL_A + CONVERT(NVARCHAR,COL_B)

ポイントは、SQL Server で、WHERE ~ IN を書く際、複数列の比較ができないことです。そこで一つの列になるよう 2 つの列を結合して、1 つにしました。今回は Date 型の列も含まれていたため、NVARCHAR がたに変換して結合しました。

-Microsoft SQL Server