SQLite Funciones de cadena: REEMPLAZAR, SUBSTR, TRIM, ROUND
SQLite está equipado de forma predeterminada con una lista de funciones integradas dentro del SQLite biblioteca. También puede agregar algunas otras funciones personalizadas utilizando el lenguaje C para ampliar las funciones principales.
Tenga en cuenta que, para todos los ejemplos siguientes, debe ejecutar sqlite3.exe y abrir una conexión a la base de datos de muestra como se indica a continuación:
Paso 1) En este paso,
- Abra Mi PC y navegue hasta el siguiente directorio “C:\sqlite" y entonces
- abierto "sqlite3.exe"
Paso 2) Abre la base de datos “TutorialesSampleDB.db" mediante el siguiente comando:
Ahora estás listo para ejecutar cualquier pregunta y pruebe cualquier consulta utilizada en las siguientes secciones.
Encontrar la LONGITUD de una cadena en SQLite
Para encontrar la longitud de una cadena, utilice LENGTH(X) donde X es un valor de cadena. Si X es un valor nulo, la función de longitud devolverá un valor nulo.
También puede utilizar la función de longitud con valores numéricos para obtener la longitud del valor numérico.
Ejemplo:
En el siguiente ejemplo, probaremos la sintaxis de la función LENGTH con valores como los siguientes:
SELECT LENGTH('A string'), LENGTH(NULL), LENGTH(20), LENGTH(20.5);
Esto te dará:
El resultado es el siguiente:
- LENGTH('Una cadena') devuelve 8, que es la longitud de la cadena "Una cadena".
- LENGTH(NULL) devuelve nulo.
- LENGTH(20) devuelve 2, porque 20 tiene 2 longitudes.
- LENGTH(20.5) devuelve 4; el punto flotante “.” se cuenta como un carácter, por lo que tendrá cuatro caracteres: los 3 caracteres que son la longitud de los números. Más un carácter más para el punto flotante “.”.
Estuche cambiador con Función SUPERIOR y Función INFERIOR
UPPER(X) devolverá la misma cadena x, pero representará todos los caracteres de la cadena en mayúsculas.
LOWER(X) devolverá la misma cadena x, pero representará todos los caracteres de la cadena en caracteres pequeños.
UPPER e LOWER devuelven valores nulos si les pasa un valor nulo.
Si pasa valores numéricos a SUPERIOR o INFERIOR, ambos devolverán el valor numérico exacto.
Ejemplo:
SELECT UPPER('a string'), LOWER('A STRING'), UPPER(20), LOWER(20), UPPER(NULL), LOWER(NULL);
Esto te dará:
El resultado es el siguiente:
- UPPER('una cadena') devuelve la cadena "una cuerda” en representación de letra mayúscula “UNA CUERDA".
- LOWER('A STRING') devuelve la cadena "UNA CUERDA" en representación de letra minúscula "una cuerda".
- UPPER(20), LOWER(20) devuelven el mismo número, ya que no tienen ningún efecto sobre los números.
- UPPER(NULL), LOWER(NULL) devuelve nulo porque les pasamos un valor nulo.
SQLite Función SUBSTR
La función SUBSTR devuelve un número específico de cadenas, comenzando desde una posición específica. Puede pasar tres operandos a la función, como este:SUBSTR(X,Y,Z)" de la siguiente manera:
- X es el literal de cadena o la columna de cadena que se va a analizar. Puede pasar un valor literal (valor estático) o un nombre de columna y, en este caso, el valor se leerá de los valores de la columna.
- Y es la posición inicial para restar la cadena a partir de ella.
- Z es el número de caracteres a analizar a partir de la posición específica Y. Este número es opcional, puede ignorarlo y, en este caso, SQLite restará la cadena a partir de la posición Y indicará el final de la cadena.
Ejemplo:
En la siguiente consulta, utilizaremos la función SUBSTR para obtener los 4 caracteres a partir del segundo carácter de los nombres de los estudiantes:
SELECT StudentName, SUBSTR(StudentName, 2, 4), SUBSTR(StudentName, 2) FROM Students;
Esto te dará:
- SUBSTR(NombreEstudiante, 2, 4) subcadena la cadena “Nombre del estudiante”A partir del segundo carácter y devuelve los siguientes 4 caracteres.
- Sin embargo, en la función SUBSTR(NombreEstudiante, 2) No especificamos un número para los caracteres que se devolverán, es por eso que SQLite devolvió todos los caracteres restantes en el "Nombre del estudiante”A partir de la segunda posición.
Cambiar partes de una cadena con SQLite Función REEMPLAZAR
REPLACE se utiliza para reemplazar cada cadena que ocurre en otra cadena con una cadena.
REEMPLAZAR (X, Y, Z): X es el literal o columna de la cadena de entrada. Y es la cadena que se reemplazará con la cadena Z. Tenga en cuenta que reemplazará cualquier aparición de la cadena Y con Z, no solo una.
Ejemplo:
En la siguiente consulta, reemplazaremos todas las ocurrencias de la cadena “xx"con la cadena"SQLite"
SELECT REPLACE('xx is very lightweight, xx is easy to learn', 'xx', 'SQLite');
Esto le dará
- La función de reemplazo reemplazó todas las cadenas "xx"con la cadena"SQLite".
- Entonces la salida será "SQLite es muy ligero, SQLite es fácil de aprender”.
Recortar espacios en blanco con SQLite Función TRIM
TRIM elimina los espacios en blanco desde el principio o desde el final de la cadena. No eliminará ningún espacio en el medio de la cadena, sólo desde el principio o desde el final.
Ejemplo:
En la siguiente consulta, utilizaremos la función TRIM para eliminar los espacios en blanco del principio y del final de la cadena.
Tenga en cuenta que el operador de concatenación “||” se utiliza para agregar un “;” adicional hasta el final de la cuerda. Para mostrarle que los espacios vacíos fueron eliminados en la ventana negra.
SELECT TRIM(' SQLite is easy to learn ') || ';';
Esto te dará:
- Observe cómo se eliminaron los espacios en blanco desde el principio y el final de la cadena, reemplazados por '; ' al final.
Leer valores absolutos con SQLite Función ABS
La función ABS devuelve el valor absoluto de un valor numérico. El valor absoluto es el valor numérico sin ningún signo positivo o negativo. ABS(X) devuelve un valor que depende del valor de X, como se muestra a continuación:
- El valor absoluto de X si X es un valor numérico.
- Un valor NULL si X es un valor nulo.
- Valor “0.0” si X es una cadena.
Ejemplo:
En la siguiente consulta, intentaremos obtener el valor absoluto de una cadena, un número y un valor nulo utilizando la función ABS:
SELECT ABS(-2), ABS(+2), ABS('a string'), ABS(null);
Esto te dará:
Los resultados son los siguientes:
- ABS(-2), ABS(+2) devuelve 2, porque 2 es el valor absoluto tanto para “-2” como para “+2”.
- ABS('una cadena') devuelve "0.0" porque pasó un valor de cadena, no un valor numérico.
- ABS(nulo) devuelve nulo porque le pasó un valor nulo.
Redondear valores con la función ROUND en SQLite
Los números decimales son números con punto flotante "." en él, por ejemplo, "20.5", "8.65". La parte a la izquierda del punto flotante se llama parte entera y la parte a la derecha del punto flotante es la parte decimal.
Los números enteros son aquellos números que no tienen ningún punto flotante. Por ejemplo, "20", "8".
ROUND(X) convierte los valores decimales o las columnas X en números enteros únicamente. Se devolverá la parte entera que está a la izquierda del punto decimal y se eliminarán todos los dígitos a la derecha del punto decimal.
Ejemplo:
En la siguiente consulta probaremos la función REDONDEAR con diferentes opciones:
SELECT ROUND(12.4354354), ROUND(12.4354354, 2), ROUND(NULL), ROUND('a string');
Esto te dará:
El resultado es el siguiente:
- ROUND(12.4354354): devuelve el valor “12”, porque no especificó el número de dígitos. Entonces, SQLite eliminó toda la parte decimal.
- REDONDEAR(12.4354354, 2): devuelve el valor “12.44”, porque especificó solo 2 dígitos para redondear, que son los dos dígitos desde la derecha del punto decimal.
- ROUND(NULL): devuelve nulo porque le pasaste un valor nulo.
- ROUND('una cadena'): devuelve el valor "0.0" porque le pasaste un valor de cadena.
Encontrar el tipo de datos de expresión con la función TYPEOF
Si desea averiguar el tipo de una columna o un valor literal, puede usar la función TYPEOF para hacerlo.
La función TYPEOF(X), por su nombre, devuelve el tipo de datos de la expresión X. Devuelve un valor de cadena que indica el tipo de datos de X. Devuelve el valor según los tipos de datos, ya sea un valor "NULO", real, texto, entero,…, etc.
Ejemplo:
En la siguiente consulta probaremos la función TYPEOF con diferentes tipos de valores literales:
SELECT TYPEOF(null), TYPEOF(12), TYPEOF(12.5), TYPEOF('a string');
Esto te dará:
Los resultados devueltos son los siguientes:
- TYPEOF(nulo): devuelve nulo porque le pasaste un valor nulo.
- TYPEOF(12): devuelve un número entero, ya que 12 es un número entero.
- TYPEOF(12.5) – devuelve REAL ya que 12.5 es un número real.
- TYPEOF('una cadena'): devuelve texto ya que "una cadena" es un texto.
Encontrar el último registro insertado con SQLite LAST_INSERT_ROWID
SQLite asigna una clave entera (Id) para todas las filas en todas las tablas. Este número se utiliza para identificar de forma única estas filas.
Cuando INSERTAS una nueva fila en una tabla, SQLite asignará al ID de fila un valor único.
Si la tabla tiene una clave principal declarada en una sola columna y esa columna es de tipo de datos INTEGER, entonces el valor de esta columna se utilizará como ID de fila.
La función LAST_INSERT_ROWID() devuelve el ROW_ID de la última fila insertada en cualquier tabla de la base de datos. Tenga en cuenta que no utiliza ningún operando.
Ejemplo:
En el siguiente ejemplo ejecutaremos la función LAST_INSERT_ROWID() de la siguiente manera:
SELECT LAST_INSERT_ROWID();
Esto te dará:
- LAST_INSERT_ROWID() devuelve 0 porque no hay filas insertadas en ninguna tabla en la conexión de base de datos actual.
Ahora, insertemos un nuevo estudiante y ejecutemos la función LAST_INSERT_ROWID() nuevamente después de la declaración de inserción, así:
INSERT INTO Students VALUES(11, 'guru', 1, '1998-10-12'); SELECT LAST_INSERT_ROWID();
Esto te dará:
- Después de insertar un nuevo estudiante con ID 11, LAST_INSERT_ROWID() devolverá el ID de la última fila insertada, que es 11.
Obteniendo la versión de tu SQLite bibliotecas
Para obtener la versión de su SQLite biblioteca, debes llamar a la función SQLITE_VERSION().
Ejemplo:
Averigüemos cuál es la versión del SQLite Estamos usando esto ejecutando el siguiente comando:
SELECT SQLITE_VERSION();
Esto te dará:
SQLITE_VERSION() devuelve 3.9.2, que es la versión de la SQLite estamos usando.
Crear funciones definidas por el usuario y agregar funciones definidas por el usuario
Para algunos usuarios, el SQLite Las funciones básicas son limitadas. Es posible que necesiten agregar funciones personalizadas para sus necesidades personalizadas.
SQLite no admite la creación de funciones definidas por el usuario. A diferencia de otros sistemas de gestión de bases de datos, no puede crear funciones definidas por el usuario en SQLite .
Sin embargo, puede crear una función utilizando lenguajes de programación como C#, C, PHP o C++ y adjunto esa función con el núcleo SQLite funciones en el SQLite biblioteca misma, usando “función_crear_sqlite3" función. Luego podrás reutilizarlos en tu base de datos.
Ejemplo:
En el siguiente ejemplo crearemos una función definida por el usuario utilizando C# lenguaje de programación y agregarlo a SQLite funciones:
[SQLiteFunction(Name = "DoubleValue", Arguments = 1, FuncType = FunctionType.Scalar)] public class DoubleValue: SQLiteFunction { public override object Invoke(object[] args) { return args[0] * 2; } }
Este fragmento de código está escrito en el Lenguaje de programación C #; crea una función C# usando el código C#.
El nombre de la función será “DoubleValue alto"Toma un parámetro y devuelve su valor multiplicado por 2.
Tenga en cuenta que C# agrega automáticamente esta función a SQLite. Todo lo que necesitas es compilar y ejecutar este código. Luego C# agregará esa función con el mismo nombre a la lista de SQLite funciones. Entonces puedes usar esta función en SQLite.
De la misma manera usando lenguajes de programación como C#, C, PHP o C++, también puede crear funciones agregadas definidas por el usuario. Que se utilizan para extender las funciones agregadas en SQLite y utilícelos para crear funciones agregadas personalizadas.
Resum
- SQLite proporciona un conjunto completo de funciones integradas que facilitan el trabajo con tablas y columnas de bases de datos, como vimos. Puede utilizar estas funciones con columnas y valores literales dentro de cualquier expresión en sus consultas SQL.
- También puede utilizar la función de longitud con valores numéricos para obtener la longitud del valor numérico.
- UPPER e LOWER devuelven valores nulos si les pasa un valor nulo.
- La función SUBSTR devuelve un número específico de cadena, comenzando desde una posición específica.
- REPLACE se utiliza para reemplazar cada cadena que ocurre en otra cadena con una cadena.
- TRIM elimina espacios en blanco desde el principio o desde el final de la cadena.
- La función ABS devuelve el valor absoluto de un valor numérico.
- ROUND(X) convierte los valores decimales o las columnas X en números enteros únicamente.
- La función TYPEOF(X), por su nombre, devuelve el tipo de datos de la expresión X.
- La función LAST_INSERT_ROWID() devuelve el ROW_ID de la última fila insertada en cualquier tabla de la base de datos.