sql >> Base de Datos >  >> RDS >> Mysql

Cómo detectar si un valor contiene al menos un dígito numérico en MySQL

Si necesita devolver todas las filas que contienen al menos un dígito numérico en MySQL, el siguiente ejemplo puede ser útil.

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)                 |
| Smash 2000 Sledge Hammer            |
| Chainsaw (Includes 5 spare fingers) |
| Straw Dog Box                       |
| Bottomless Coffee Mugs (4 Pack)     |
+-------------------------------------+

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 contienen números representados por dígitos numéricos:

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

Resultado:

+-------------------------------------+
| ProductName                         |
+-------------------------------------+
| Smash 2000 Sledge Hammer            |
| Chainsaw (Includes 5 spare fingers) |
| Bottomless Coffee Mugs (4 Pack)     |
+-------------------------------------+

Como era de esperar, solo se devuelven las filas que contienen números.

En este caso, usamos REGEXP de MySQL función para encontrar todas las filas que coincidieron con un patrón. El patrón abarca todos los dígitos numéricos desde 0 a 9 , además de cualquier otro carácter.