Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

2 maneiras de retornar linhas que não contêm valores numéricos no Oracle


Os exemplos a seguir retornam apenas as linhas que não contêm nenhum dígito numérico em uma determinada coluna no Oracle Database.

Dados de amostra


Suponha que temos uma tabela com os seguintes dados:
SELECT ProductName 
FROM Products;

Resultado:
Left Handed Screwdriver
Right Handed Screwdriver
Bottomless Coffee Cup (4 pack)
Urban Dictionary Version 2.3
Beer Water
10 Songs

A tabela ProductName usa um varchar2 tipo de dados e, portanto, contém dados de caracteres. Mas também pode conter dígitos numéricos.

Exemplo 1 – Regex


Aqui está uma consulta que podemos usar para retornar todas as linhas que não contêm dígitos numéricos:
SELECT ProductName
FROM Products 
WHERE NOT REGEXP_LIKE(ProductName, '[0-9]+');

Resultado:
Left Handed Screwdriver
Right Handed Screwdriver
Beer Water

Exemplo 2 – POSIX


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

Resultado:
Left Handed Screwdriver
Right Handed Screwdriver
Beer Water