sql >> Databáze >  >> NoSQL >> MongoDB

Zjistěte, zda hodnota obsahuje alespoň jednu číselnou číslici v SQL

Někdy může být potřeba hledat v databázové tabulce pouze ty řádky, které obsahují alespoň jedno číslo v daném sloupci.

Technicky mohou být čísla reprezentována slovy a jinými symboly, ale zde „číslo“ znamená „číselnou číslici“.

Níže jsou příklady, jak najít řádky, které obsahují alespoň jedno číslo v různých DBMS založených na SQL.

SQL Server

V SQL Serveru můžeme použít LIKE operátor:

SELECT ProductName 
FROM Products
WHERE ProductName LIKE '%[0-9]%';

Tento příklad vrátí ProductName ze sloupce Products tabulka, kde je v ProductName alespoň jedna číslice sloupec.

Oracle

V Oracle můžeme použít REGEXP_LIKE podmínka se vzorem regulárního výrazu:

SELECT ProductName 
FROM Products
WHERE REGEXP_LIKE(ProductName, '[0-9]+');

REGEXP_LIKE společnosti Oracle podmínka odpovídá standardu regulárních výrazů POSIX. Proto můžeme získat stejný výsledek s následujícím vzorem:

SELECT ProductName 
FROM Products
WHERE REGEXP_LIKE(ProductName, '[[:digit:]]');

MySQL

V MySQL můžeme použít REGEXP funkce:

SELECT ProductName 
FROM Products
WHERE ProductName REGEXP '[0-9]+';

Můžeme také použít POSIX v MySQL:

SELECT ProductName 
FROM Products
WHERE ProductName REGEXP '[[:digit:]]';

MariaDB

MariaDB má také REGEXP funkce, takže můžeme použít stejný kód jako u MySQL:

SELECT ProductName 
FROM Products
WHERE ProductName REGEXP '[0-9]+';

Můžeme také použít POSIX v MariaDB:

SELECT ProductName 
FROM Products
WHERE ProductName REGEXP '[[:digit:]]';

PostgreSQL

Zde je ekvivalent PostgreSQL:

SELECT ProductName 
FROM Products
WHERE ProductName ~ '[0-9]+';

A ekvivalent POSIX:

SELECT ProductName 
FROM Products
WHERE ProductName ~ '[[:digit:]]';

SQLite

V SQLite můžeme použít následující kód:

SELECT ProductName 
FROM Products
WHERE ProductName REGEXP '[0-9]+';

REGEXP Operátor je speciální syntaxe pro REGEXP() uživatelská funkce v SQLite.

Proto můžeme použít následující kód k získání stejného výsledku:

SELECT ProductName 
FROM Products
WHERE REGEXP('[0-9]+', ProductName);

  1. Použití memcached nebo Redis na aws-elasticache

  2. Zpětné volání instance.save() Mongoose.js se nespustí

  3. mongodb získat odlišné záznamy

  4. Online zálohy Apache HBase s CopyTable