REGEXP_EXTRACT() 関数を使って値が整数かどうかを確認する
MySQLで値が整数かどうかを確認する方法
ISNUMERIC()
関数は、引数が数値かどうかを判断します。数値であれば 1、そうでなければ 0 を返します。
SELECT ISNUMERIC(column_name);
例
SELECT ISNUMERIC('123'); -- 1 を返す
SELECT ISNUMERIC('12.3'); -- 0 を返す
SELECT ISNUMERIC('abc'); -- 0 を返す
REGEXP_EXTRACT()
関数は、正規表現を使用して文字列から部分一致する文字列を抽出します。整数の場合は、空の文字列ではなく数値が抽出されます。
SELECT REGEXP_EXTRACT(column_name, '^[0-9]+$');
SELECT REGEXP_EXTRACT('123', '^[0-9]+$'); -- '123' を返す
SELECT REGEXP_EXTRACT('12.3', '^[0-9]+$'); -- NULL を返す
SELECT REGEXP_EXTRACT('abc', '^[0-9]+$'); -- NULL を返す
データ型を確認する
SHOW COLUMNS FROM table_name
クエリを使用して、列のデータ型を確認できます。列のデータ型が整数型であれば、その値は整数であることが保証されます。
SHOW COLUMNS FROM table_name;
SHOW COLUMNS FROM customers;
+-------------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------------+-------------+------+-----+---------+-------+
| id | int(11) | NO | PRI | NULL | |
| name | varchar(255)| YES | | NULL | |
| age | int(11) | YES | | NULL | |
+-------------+-------------+------+-----+---------+-------+
上記の例では、id
列と age
列は整数型であるため、これらの列の値は整数であることが保証されます。
その他の方法
上記以外にも、いくつかの方法で値が整数かどうかを確認できます。
CAST()
関数を使用して、値を整数型に変換できるかどうかを確認します。DIV()
関数を使用して、値を 1 で割ったときの余りを確認します。
これらの方法は、上記の3つの方法よりも複雑で効率が低いため、あまり使用されません。
MySQLで値が整数かどうかを確認するには、いくつかの方法があります。最も簡単な方法は、ISNUMERIC()
関数または REGEXP_EXTRACT()
関数を使用することです。データ型を確認する方法も有効です。
-- サンプルテーブル
CREATE TABLE customers (
id INT(11) NOT NULL AUTO_INCREMENT,
name VARCHAR(255) NOT NULL,
age INT(11) NOT NULL,
PRIMARY KEY (id)
);
-- ISNUMERIC() 関数を使う
SELECT id, name, age, ISNUMERIC(age) AS is_integer
FROM customers;
-- REGEXP_EXTRACT() 関数を使う
SELECT id, name, age, REGEXP_EXTRACT(age, '^[0-9]+$') AS is_integer
FROM customers;
-- データ型を確認する
SHOW COLUMNS FROM customers;
+----+------+-----+-----------+
| id | name | age | is_integer |
+----+------+-----+-----------+
| 1 | John | 30 | 1 |
| 2 | Mary | 25 | 1 |
| 3 | Alice | 20 | 1 |
+----+------+-----+-----------+
+-------------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------------+-------------+------+-----+---------+-------+
| id | int(11) | NO | PRI | NULL | |
| name | varchar(255)| YES | | NULL | |
| age | int(11) | YES | | NULL | |
+-------------+-------------+------+-----+---------+-------+
他の方法
CAST()
関数は、値を指定されたデータ型に変換します。値を整数型に変換できなければ、エラーが発生します。
SELECT CAST(column_name AS INT);
SELECT CAST('123' AS INT); -- 123 を返す
SELECT CAST('12.3' AS INT); -- エラーが発生
SELECT CAST('abc' AS INT); -- エラーが発生
DIV()
関数は、2つの値を割り算し、商を返します。値が整数であれば、余りは 0 になります。
SELECT DIV(column_name, 1);
SELECT DIV('123', 1); -- 123 を返す
SELECT DIV('12.3', 1); -- 12 を返す
SELECT DIV('abc', 1); -- エラーが発生
CASE
式を使用して、値が整数かどうかを判断し、それに応じて異なる値を返すことができます。
SELECT CASE
WHEN ISNUMERIC(column_name) THEN column_name
ELSE NULL
END AS is_integer;
SELECT CASE
WHEN ISNUMERIC('123') THEN '123'
ELSE NULL
END AS is_integer; -- '123' を返す
SELECT CASE
WHEN ISNUMERIC('12.3') THEN '12.3'
ELSE NULL
END AS is_integer; -- NULL を返す
SELECT CASE
WHEN ISNUMERIC('abc') THEN 'abc'
ELSE NULL
END AS is_integer; -- NULL を返す
MySQLで値が整数かどうかを確認するには、いくつかの方法があります。どの方法を使用するかは、状況によって異なります。
mysql