Понякога може да се наложи да търсите в таблица на база данни само за онези редове, които съдържат поне едно число в дадена колона.
Технически числата могат да бъдат представени с думи и други символи, но тук „число“ означава „цифрова цифра“.
По-долу са дадени примери за това как да намерите редове, които съдържат поне едно число в различни SQL базирани СУБД.
SQL сървър
В SQL Server можем да използваме LIKE
оператор:
SELECT ProductName
FROM Products
WHERE ProductName LIKE '%[0-9]%';
Този пример връща ProductName
колона от Products
таблица, в която има поне една цифра в ProductName
колона.
Оракул
В Oracle можем да използваме REGEXP_LIKE
условие с модел на регулярен израз:
SELECT ProductName
FROM Products
WHERE REGEXP_LIKE(ProductName, '[0-9]+');
REGEXP_LIKE
на Oracle условието отговаря на стандарта за регулярни изрази POSIX. Следователно можем да получим същия резултат със следния модел:
SELECT ProductName
FROM Products
WHERE REGEXP_LIKE(ProductName, '[[:digit:]]');
MySQL
В MySQL можем да използваме REGEXP
функция:
SELECT ProductName
FROM Products
WHERE ProductName REGEXP '[0-9]+';
Можем също да използваме POSIX в MySQL:
SELECT ProductName
FROM Products
WHERE ProductName REGEXP '[[:digit:]]';
MariaDB
MariaDB също има REGEXP
функция, така че можем да използваме същия код като при MySQL:
SELECT ProductName
FROM Products
WHERE ProductName REGEXP '[0-9]+';
Можем също да използваме POSIX в MariaDB:
SELECT ProductName
FROM Products
WHERE ProductName REGEXP '[[:digit:]]';
PostgreSQL
Ето еквивалента на PostgreSQL:
SELECT ProductName
FROM Products
WHERE ProductName ~ '[0-9]+';
И POSIX еквивалентът:
SELECT ProductName
FROM Products
WHERE ProductName ~ '[[:digit:]]';
SQLite
В SQLite можем да използваме следния код:
SELECT ProductName
FROM Products
WHERE ProductName REGEXP '[0-9]+';
REGEXP
операторът е специален синтаксис за REGEXP()
потребителска функция в SQLite.
Следователно можем да използваме следния код, за да получим същия резултат:
SELECT ProductName
FROM Products
WHERE REGEXP('[0-9]+', ProductName);