MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

Detectar se um valor contém pelo menos um dígito numérico no SQL


Às vezes, você pode precisar pesquisar em uma tabela de banco de dados apenas as linhas que contêm pelo menos um número em uma determinada coluna.

Tecnicamente, os números podem ser representados por palavras e outros símbolos, mas aqui “número” significa “dígito numérico”.

Abaixo estão exemplos de como localizar linhas que contêm pelo menos um número em vários DBMSs baseados em SQL.

SQL Server


No SQL Server, podemos usar o LIKE operador:
SELECT ProductName 
FROM Products
WHERE ProductName LIKE '%[0-9]%';

Esse exemplo retorna o ProductName coluna de Products tabela onde há pelo menos um dígito no ProductName coluna.

Oráculo


No Oracle, podemos usar o REGEXP_LIKE condição com um padrão de expressão regular:
SELECT ProductName 
FROM Products
WHERE REGEXP_LIKE(ProductName, '[0-9]+');

REGEXP_LIKE da Oracle condição está em conformidade com o padrão de expressão regular POSIX. Portanto, podemos obter o mesmo resultado com o seguinte padrão:
SELECT ProductName 
FROM Products
WHERE REGEXP_LIKE(ProductName, '[[:digit:]]');

MySQL


No MySQL, podemos usar o REGEXP função:
SELECT ProductName 
FROM Products
WHERE ProductName REGEXP '[0-9]+';

Também podemos usar POSIX no MySQL:
SELECT ProductName 
FROM Products
WHERE ProductName REGEXP '[[:digit:]]';

MariaDB


MariaDB também tem um REGEXP função, então podemos usar o mesmo código do MySQL:
SELECT ProductName 
FROM Products
WHERE ProductName REGEXP '[0-9]+';

Também podemos usar POSIX no MariaDB:
SELECT ProductName 
FROM Products
WHERE ProductName REGEXP '[[:digit:]]';

PostgreSQL


Aqui está o equivalente do PostgreSQL:
SELECT ProductName 
FROM Products
WHERE ProductName ~ '[0-9]+';

E o equivalente POSIX:
SELECT ProductName 
FROM Products
WHERE ProductName ~ '[[:digit:]]';

SQLite


No SQLite, podemos usar o seguinte código:
SELECT ProductName 
FROM Products
WHERE ProductName REGEXP '[0-9]+';

O REGEXP operador é uma sintaxe especial para o REGEXP() função de usuário no SQLite.

Portanto, podemos usar o seguinte código para obter o mesmo resultado:
SELECT ProductName 
FROM Products
WHERE REGEXP('[0-9]+', ProductName);