Jika Anda memiliki kolom dalam tabel database yang berisi data karakter, tetapi beberapa baris juga berisi angka, Anda bisa menggunakan kueri SQL berikut untuk mengembalikan hanya baris yang tidak berisi angka di dalam nilai.
Sebenarnya, angka dapat diwakili oleh angka numerik, kata-kata dan simbol lainnya, tetapi untuk tujuan artikel ini, "angka" berarti "digit numerik". Jadi, kami menemukan nilai yang tidak mengandung angka numerik.
Kueri yang Anda gunakan akan bergantung pada DBMS Anda.
SQL Server
Di SQL Server, kita bisa menggunakan query seperti ini:
SELECT ProductName
FROM Products
WHERE ProductName NOT LIKE '%[0-9]%';
Di sini, kami mengembalikan semua baris di mana ProductName
kolom tidak mengandung angka numerik.
Oracle
Di Oracle, kita dapat menggunakan REGEXP_LIKE()
fungsi:
SELECT ProductName
FROM Products
WHERE NOT REGEXP_LIKE(ProductName, '[0-9]+');
Dalam hal ini kami menyediakan pola ekspresi reguler yang cocok dengan nilai yang tidak ingin kami kembalikan. Nilai sebenarnya cocok, tetapi kami juga meniadakan kecocokan dengan menggunakan NOT
, yang berarti semua yang tidak cocok akan dikembalikan.
Cara lain untuk melakukannya adalah dengan menggunakan [:digit:]
Kelas karakter POSIX:
SELECT ProductName
FROM Products
WHERE NOT REGEXP_LIKE(ProductName, '[[:digit:]]');
MySQL
Di MySQL, kita dapat menggunakan NOT REGEX
fungsi:
SELECT ProductName
FROM Products
WHERE ProductName NOT REGEXP '[0-9]+';
Cara lain untuk menulisnya adalah seperti ini:
SELECT ProductName
FROM Products
WHERE NOT (ProductName REGEXP '[0-9]+');
Atau kita bisa menggunakan [:digit:]
Kelas karakter POSIX:
SELECT ProductName
FROM Products
WHERE NOT (ProductName REGEXP '[[:digit:]]');
MariaDB
Di MariaDB, kita dapat menggunakan implementasi NOT REGEX
fungsi:
SELECT ProductName
FROM Products
WHERE ProductName NOT REGEXP '[0-9]+';
Cara lain untuk menulisnya adalah seperti ini:
SELECT ProductName
FROM Products
WHERE NOT (ProductName REGEXP '[0-9]+');
Atau kita bisa menggunakan [:digit:]
Kelas karakter POSIX:
SELECT ProductName
FROM Products
WHERE NOT (ProductName REGEXP '[[:digit:]]');
PostgreSQL
Inilah cara kita melakukannya di Postgres:
SELECT ProductName
FROM Products
WHERE ProductName !~ '[0-9]+';
SQLite
Di SQLite, kita bisa melakukan ini:
SELECT ProductName
FROM Products
WHERE ProductName NOT REGEXP '[0-9]+';
Dalam SQLite, REGEXP
operator adalah sintaks khusus untuk REGEXP()
fungsi pengguna, jadi kita juga bisa melakukan hal berikut:
SELECT ProductName
FROM Products
WHERE NOT REGEXP('[0-9]+', ProductName);