Mungkin ada saat-saat di mana Anda perlu memeriksa kolom untuk nilai non-numerik. Misalnya, Anda menemukan bahwa sebuah kolom adalah varchar
kolom padahal seharusnya kolom numerik.
Ini mudah dilakukan di SQL Server dengan ISNUMERIC()
fungsi.
Contoh Data
Misalkan kita membuat tabel dengan varchar
kolom, dan masukkan data sebagai berikut:
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;
Hasil:
+-----------+ | 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 | +-----------+
Sebagian besar nilai di atas adalah numerik, meskipun dalam varchar
kolom. Contoh berikut memeriksa kolom ini untuk nilai non-numerik.
ISNUMERIC()
Fungsi
SELECT c1
FROM t1
WHERE ISNUMERIC(c1) <> 1;
Hasil:
+-----------+ | c1 | |-----------| | a | | 9afc | | e7 | | +e0 | | Ten | | 5 Dollars | +-----------+
Di sini, saya menggunakan ISNUMERIC()
fungsi bersama dengan Not Equal To (<>
) operator untuk memeriksa nilai yang bukan numerik.
Mungkin ada alasan bagus untuk sebuah kolom menjadi varchar
bukannya numerik. Tetapi jika tidak, nilainya harus dikonversi ke ekuivalen numeriknya, dan kemudian tipe data kolom harus diubah menjadi tipe numerik. Ini akan membantu menjaga integritas data database.
Temukan Nilai yang Tidak Mengandung Angka Apapun
Kita dapat menggunakan kueri berikut untuk mengembalikan semua baris yang tidak berisi nilai numerik.
SELECT c1
FROM t1
WHERE c1 NOT LIKE '%[0-9]%';
Hasil:
+------+ | c1 | |------| | a | | Ten | +------+
Ini adalah hasil yang berbeda dari contoh sebelumnya, karena kami hanya mencari semua nilai yang tidak mengandung data numerik apa pun. Pada contoh sebelumnya, kami mencari nilai-nilai yang bukan numerik.