SQL Serverでは、ISNUMERIC()
を使用できます。 列から数値を返す関数。
または、別のクエリを実行して、数値データを含むすべての値を返すこともできます。
サンプルデータ
varchar
を使用してテーブルを作成するとします。 列に入力し、次のようにデータを挿入します。
DROP TABLE IF EXISTS t1;
CREATE TABLE t1 (
c1 varchar(255)
);
INSERT INTO t1 (c1) VALUES
('0'),
('1'),
('+1'),
('-1'),
('+1'),
('00.00'),
('73.45'),
('+73.45'),
('-73.45'),
('.246'),
('-.34e7'),
('12.e-3'),
('1.2e+4'),
('a'),
('9afc'),
('e7'),
('+e0'),
('Ten'),
('5 Dollars');
SELECT * FROM t1;
結果:
+-----------+ | c1 | |-----------| | 0 | | 1 | | +1 | | -1 | | +1 | | 00.00 | | 73.45 | | +73.45 | | -73.45 | | .246 | | -.34e7 | | 12.e-3 | | 1.2e+4 | | a | | 9afc | | e7 | | +e0 | | Ten | | 5 Dollars | +-----------+
これはvarchar
であるため 列には、文字データが含まれています。数値データを含めることができますが、数値タイプとして保存されません。したがって、列にはテキストデータと数値の両方を含めることができます。次の例では、この列の数値を確認します。
ISNUMERIC()
機能
SELECT c1
FROM t1
WHERE ISNUMERIC(c1) = 1;
結果:
+--------+ | c1 | |--------| | 0 | | 1 | | +1 | | -1 | | +1 | | 00.00 | | 73.45 | | +73.45 | | -73.45 | | .246 | | -.34e7 | | 12.e-3 | | 1.2e+4 | +--------+
ここでは、ISNUMERIC()
を使用しました Equal To(=
)数値の値を返す演算子。この関数は1
を返します 数値で0
の場合 そうでないとき。
数値を含む値を見つける
次のクエリを使用して、数値を含むすべての行を返すことができます(他の文字も含まれている場合でも)。
SELECT c1
FROM t1
WHERE c1 LIKE '%[0-9]%';
結果:
+-----------+ | c1 | |-----------| | 0 | | 1 | | +1 | | -1 | | +1 | | 00.00 | | 73.45 | | +73.45 | | -73.45 | | .246 | | -.34e7 | | 12.e-3 | | 1.2e+4 | | 9afc | | e7 | | +e0 | | 5 Dollars | +-----------+
これは前の例とは異なる結果です。これは、含むすべての値を検索しているだけだからです。 任意の数値データ。前の例では、数値である値を探していました。