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

Encontre valores que não contenham números no SQL


Se você tiver uma coluna em uma tabela de banco de dados que contém dados de caracteres, mas algumas linhas também contêm números, você pode usar as seguintes consultas SQL para retornar apenas as linhas que não contêm números dentro do valor.

Estritamente falando, os números podem ser representados por dígitos numéricos, palavras e outros símbolos, mas para os fins deste artigo, “número” significa “dígito numérico”. Portanto, estamos encontrando valores que não contêm dígitos numéricos.

A consulta que você usa dependerá do seu DBMS.

SQL Server


No SQL Server, podemos usar uma consulta como esta:
SELECT ProductName 
FROM Products
WHERE ProductName NOT LIKE '%[0-9]%';

Aqui, estamos retornando todas as linhas em que o ProductName coluna não contém nenhum dígito numérico.

Oráculo


No Oracle, podemos usar o REGEXP_LIKE() função:
SELECT ProductName
FROM Products 
WHERE NOT REGEXP_LIKE(ProductName, '[0-9]+');

Nesse caso, fornecemos um padrão de expressão regular que corresponde aos valores que não queremos que sejam retornados. Os valores são de fato correspondentes, mas também negamos a correspondência usando NOT , o que significa que tudo o que não corresponder é retornado.

Outra maneira de fazer isso é usar o [:digit:] Classe de caracteres POSIX:
SELECT ProductName
FROM Products 
WHERE NOT REGEXP_LIKE(ProductName, '[[:digit:]]');

MySQL


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

Outra maneira de escrever é assim:
SELECT ProductName 
FROM Products
WHERE NOT (ProductName REGEXP '[0-9]+');

Ou podemos usar o [:digit:] Classe de caracteres POSIX:
SELECT ProductName 
FROM Products
WHERE NOT (ProductName REGEXP '[[:digit:]]');

MariaDB


No MariaDB, podemos usar sua implementação do NOT REGEX função:
SELECT ProductName 
FROM Products
WHERE ProductName NOT REGEXP '[0-9]+';

Outra maneira de escrever é assim:
SELECT ProductName 
FROM Products
WHERE NOT (ProductName REGEXP '[0-9]+');

Ou podemos usar o [:digit:] Classe de caracteres POSIX:
SELECT ProductName 
FROM Products
WHERE NOT (ProductName REGEXP '[[:digit:]]');

PostgreSQL


Veja como podemos fazer isso no Postgres:
SELECT ProductName 
FROM Products
WHERE ProductName !~ '[0-9]+';

SQLite


No SQLite, podemos fazer isso:
SELECT ProductName 
FROM Products
WHERE ProductName NOT REGEXP '[0-9]+';

No SQLite, o REGEXP operador é uma sintaxe especial para o REGEXP() função do usuário, então também podemos fazer o seguinte:
SELECT ProductName 
FROM Products
WHERE NOT REGEXP('[0-9]+', ProductName);