SQL Server 数値が含まれているかチェックしてデータを抽出する

SQL Server で、あるカラムの値が数値かどうかチェックするには、ISNUMERIC を使います(この関数は SQL Server 2014 から)。

式が数値型として有効かどうかチェックする

サンプルデータ

例えば、このようなデータがあります。 この ProductCd 列で、数値の CD だけで構成されているものを抽出したい場合は、以下のような SQL になります。

SELECT
    *
FROM
    Products
WHERE
    ISNUMERIC(ProductCd) = 1
ISNUMERICを条件に使う

実行結果

逆に、数値ではないものを抽出したい場合、条件を = 0 とします。

なお、この「数値以外」ですが、プラス記号やマイナス記号、ドル記号など通貨記号も数字ではないと判断されます。

カラム毎に数値かどうかチェックして、数値かどうかで場合分けをしたい場合は、以下のような SQL になります

SELECT
	CASE WHEN ISNUMERIC(ProductCd) = 1 THEN 'True' ELSE 'False' END AS 数値チェック
FROM
    Products
ISNUMERICをCASEで使う

実行結果

このブログの人気の投稿

コピーした行の挿入が表示されない時はフィルタされていないかチェック

Excel で一部の図形だけ固定する