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

Relleno en SQL

Algunos RDBMS proporcionan un LPAD() y RPAD() función que nos permite rellenar a la izquierda o a la derecha una cadena. Algunas funciones también nos permiten agregar ceros iniciales o finales.

A continuación se muestran ejemplos de la aplicación de relleno SQL en algunos de los RDBMS más populares.

Oráculo

Oracle nos proporciona LPAD() y RPAD() específicamente para rellenar la parte izquierda o derecha de una cadena:

SELECT LPAD('Cat', 20)
FROM DUAL;

Resultado:

         LPAD('CAT',20) 
_______________________ 
                 Cat    

En este caso usé LPAD() para aplicar el relleno izquierdo, y la cadena resultante tiene 20 caracteres, porque eso es lo que usé para el segundo argumento.

El resultado se rellena con un espacio, porque ese es el carácter predeterminado que se usa para el relleno. Si no especifica con qué carácter rellenar la cadena, se usa un espacio.

Puede agregar un tercer carácter para especificar qué carácter usar para el relleno:

SELECT LPAD('7', 3, '0')
FROM DUAL;

Resultado:

   LPAD('7',3,'0') 
__________________ 
007               

En este caso, rellené un número con ceros (aunque el resultado es una cadena).

Oracle también tiene un TO_CHAR(number) función que se puede usar para agregar ceros a la izquierda de un número:

SELECT TO_CHAR(7, 'fm000')
FROM DUAL;

Resultado:

007

El 0 El elemento de formato representa cada dígito en el número original y cero si no existe ningún dígito en esa posición en el número original.

PostgreSQL

PostgreSQL también tiene su propio LPAD() y RPAD() funciones:

SELECT 
    LPAD('7', 3, '0') AS "Left Padding",
    RPAD('7', 3, '0') AS "Right Padding",
    LPAD(RPAD('7', 3, '0'), 5, '0') AS "Both";

Resultado:

 Left Padding | Right Padding | Both  
--------------+---------------+-------
 007          | 700           | 00700

Y también tiene su propio TO_CHAR() función que funciona de manera muy similar a la función de Oracle del mismo nombre:

SELECT TO_CHAR(7, 'fm000');

Resultado:

007

MariaDB

MariaDB tiene su propio LPAD() y RPAD() funciones:

SELECT 
    LPAD('7', 3, '0') AS "Left Padding",
    RPAD('7', 3, '0') AS "Right Padding",
    LPAD(RPAD('7', 3, '0'), 5, '0') AS "Both";

Resultado:

+--------------+---------------+-------+
| Left Padding | Right Padding | Both  |
+--------------+---------------+-------+
| 007          | 700           | 00700 |
+--------------+---------------+-------+

Y aunque MariaDB tiene su propio TO_CHAR() función, no funciona en números (está limitado a valores de fecha y hora).

MySQL

MySQL también tiene su propio LPAD() y RPAD() funciones.

Aquí hay un ejemplo del uso de LPAD() contra una columna de la base de datos:

SELECT Genre, LPAD(Genre, 10, '.')
FROM Genres;

Resultado:

+---------+----------------------+
| Genre   | LPAD(Genre, 10, '.') |
+---------+----------------------+
| Rock    | ......Rock           |
| Jazz    | ......Jazz           |
| Country | ...Country           |
| Pop     | .......Pop           |
| Blues   | .....Blues           |
| Hip Hop | ...Hip Hop           |
| Rap     | .......Rap           |
| Punk    | ......Punk           |
+---------+----------------------+

Servidor SQL

SQL Server es un poco anómalo porque no tiene un LPAD() o RPAD() función.

Sin embargo, SQL Server tiene un FORMAT() función que nos permite rellenar fácilmente números con ceros a la izquierda:

SELECT FORMAT(7, '000');

Resultado:

007

El segundo argumento es una cadena de formato numérico personalizado que determina cuántos caracteres tendrá la cadena resultante. El hecho de que usé ceros significa que el resultado tendrá ceros a la izquierda si es necesario.

Para rellenar cadenas en SQL Server, podemos hacer algo como esto:

SELECT RIGHT('.......' + 'Cat', 7);

Resultado:

....Cat

Hay varias otras técnicas que podemos usar para aplicar relleno en SQL Server.