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.
Técnicamente, los números se pueden representar con palabras y otros símbolos, pero aquí "número" significa "dígito numérico".
Abajo hay ejemplos de cómo encontrar filas que contienen al menos un número en varios DBMS basados en SQL.
Servidor SQL
En SQL Server, podemos usar LIKE
operador:
SELECT ProductName
FROM Products
WHERE ProductName LIKE '%[0-9]%';
Ese ejemplo devuelve el ProductName
columna de Products
tabla donde hay al menos un dígito en el ProductName
columna.
Oráculo
En Oracle, podemos usar el REGEXP_LIKE
condición con un patrón de expresión regular:
SELECT ProductName
FROM Products
WHERE REGEXP_LIKE(ProductName, '[0-9]+');
REGEXP_LIKE
de Oracle condición cumple con el estándar de expresiones regulares POSIX. Por lo tanto, podemos obtener el mismo resultado con el siguiente patrón:
SELECT ProductName
FROM Products
WHERE REGEXP_LIKE(ProductName, '[[:digit:]]');
MySQL
En MySQL, podemos usar REGEXP
función:
SELECT ProductName
FROM Products
WHERE ProductName REGEXP '[0-9]+';
También podemos usar POSIX en MySQL:
SELECT ProductName
FROM Products
WHERE ProductName REGEXP '[[:digit:]]';
MariaDB
MariaDB también tiene un REGEXP
función, por lo que podemos usar el mismo código que con MySQL:
SELECT ProductName
FROM Products
WHERE ProductName REGEXP '[0-9]+';
También podemos usar POSIX en MariaDB:
SELECT ProductName
FROM Products
WHERE ProductName REGEXP '[[:digit:]]';
PostgreSQL
Aquí está el equivalente de PostgreSQL:
SELECT ProductName
FROM Products
WHERE ProductName ~ '[0-9]+';
Y el equivalente POSIX:
SELECT ProductName
FROM Products
WHERE ProductName ~ '[[:digit:]]';
SQLite
En SQLite, podemos usar el siguiente código:
SELECT ProductName
FROM Products
WHERE ProductName REGEXP '[0-9]+';
El REGEXP
operador es una sintaxis especial para REGEXP()
función de usuario en SQLite.
Por lo tanto, podemos usar el siguiente código para obtener el mismo resultado:
SELECT ProductName
FROM Products
WHERE REGEXP('[0-9]+', ProductName);