sql >> Base de Datos >  >> RDS >> Oracle

2 formas de devolver filas que no contienen valores numéricos en Oracle

Los siguientes ejemplos devuelven solo aquellas filas que no contienen dígitos numéricos en una columna dada en Oracle Database.

Datos de muestra

Supongamos que tenemos una tabla con los siguientes datos:

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

La tabla ProductName usa un varchar2 tipo de datos, por lo que contiene datos de caracteres. Pero también puede contener dígitos numéricos.

Ejemplo 1:expresiones regulares

Aquí hay una consulta que podemos usar para devolver todas las filas que no contienen dígitos numéricos:

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

Resultado:

Left Handed Screwdriver
Right Handed Screwdriver
Beer Water

Ejemplo 2:POSIX

En Oracle Database, el REGEXP_LIKE condición cumple con el estándar de expresiones regulares POSIX. Por lo tanto, podemos obtener el mismo resultado con la siguiente consulta:

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

Resultado:

Left Handed Screwdriver
Right Handed Screwdriver
Beer Water