sql >> Base de Datos >  >> RDS >> PostgreSQL

Encuentra valores que no contienen números en PostgreSQL

El siguiente ejemplo devuelve todas las filas que no contienen números en PostgreSQL.

Los números se pueden representar con palabras y otros símbolos, pero para este artículo, "número" simplemente significa "dígito numérico". Así que estamos encontrando valores que no contienen dígitos numéricos.

Ejemplo

Supongamos que tenemos una tabla llamada Products con los siguientes datos en su ProductName columna:

SELECT ProductName 
FROM Products;

Resultado:

           productname           
---------------------------------
 Left handed screwdriver
 Right handed screwdriver
 Long Weight (blue)
 Long Weight (green)
 Straw Dog Box
 Bottomless Coffee Mugs (4 Pack)
 Smash 2000 Sledge Hammer
 Chainsaw (3 spare fingers)

Esta columna contiene datos de caracteres, pero algunas filas contienen números dentro de esos datos de caracteres (aunque no se almacenan como un tipo numérico).

Podemos usar la siguiente consulta para devolver solo aquellas filas que no contienen dígitos numéricos:

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

Resultado:

       productname        
--------------------------
 Left handed screwdriver
 Right handed screwdriver
 Long Weight (blue)
 Long Weight (green)
 Straw Dog Box
(5 rows)

Como era de esperar, solo se devuelven las filas que no contienen dígitos numéricos.

En PostgreSQL, !~ es un operador que distingue entre mayúsculas y minúsculas que se utiliza para devolver valores que no coinciden con la expresión regular dada. Para coincidencias que no distinguen entre mayúsculas y minúsculas, utilice !~* .

Puedes usar ~ para devolver todas las filas que do coincidir con la expresión regular (y ~* para coincidencias que no distinguen entre mayúsculas y minúsculas).