sql >> Base de Datos >  >> NoSQL >> MongoDB

Detectar si un valor contiene al menos un dígito numérico en SQL

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);