SQL Server 数値が含まれているかチェックしてデータを抽出する
SQL Server で、あるカラムの値が数値かどうかチェックするには、ISNUMERIC を使います(この関数は SQL Server 2014 から)。
式が数値型として有効かどうかチェックする
例えば、このようなデータがあります。 この ProductCd 列で、数値の CD だけで構成されているものを抽出したい場合は、以下のような SQL になります。
SELECT
*
FROM
Products
WHERE
ISNUMERIC(ProductCd) = 1
実行結果
逆に、数値ではないものを抽出したい場合、条件を = 0 とします。
なお、この「数値以外」ですが、プラス記号やマイナス記号、ドル記号など通貨記号も数字ではないと判断されます。
カラム毎に数値かどうかチェックして、数値かどうかで場合分けをしたい場合は、以下のような SQL になります
SELECT
CASE WHEN ISNUMERIC(ProductCd) = 1 THEN 'True' ELSE 'False' END AS 数値チェック
FROM
Products
実行結果