sql >> Base de Datos >  >> RDS >> Sqlserver

Cómo detectar si un valor contiene al menos un número en SQL Server

A veces, es posible que necesite buscar en una tabla de base de datos solo aquellas filas que contienen al menos un número en una columna determinada.

Estrictamente hablando, los números se pueden representar con palabras y otros símbolos, pero para los fines de este artículo, "número" significa "dígito numérico".

A continuación se muestra un ejemplo de cómo usar T-SQL para encontrar filas que contienen al menos un número en SQL Server.

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             |
| Long Weight (blue)                  |
| Long Weight (green)                 |
| Smash 2000 Sledgehammer             |
| Chainsaw (includes 3 spare fingers) |
| Straw Dog Box                       |
| Bottomless Coffee Mugs (4 Pack)     |
| Right handed screwdriver            |
+-------------------------------------+

Esta columna obviamente 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 LIKE '%[0-9]%';

Resultado:

+-------------------------------------+
| ProductName                         |
|-------------------------------------|
| Smash 2000 Sledgehammer             |
| Chainsaw (includes 3 spare fingers) |
| Bottomless Coffee Mugs (4 Pack)     |
+-------------------------------------+

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

Esta técnica no se limita solo a números. Puede modificar esta consulta para incluir otros caracteres si es necesario. Todo lo que estamos haciendo es especificar nuestro propio patrón para LIKE operador.