POSITION()

1 comentario

Descripción: Devuelve la posición (basada en 1) de la primera ocurrencia de una subcadena en una cadena alfanumérica. Si se especifica el opcional tercer argumento la búsqueda empieza desde allí. Si no se encuentra coincidencia entonces devuelve 0.

Tipo de resultado: Integer

Sintaxis:

POSITION(<argumentos>)

<argumentos> = subcadena IN cadena_alfanumérica 

| subcadena, cadena_alfanumérica [, posición_inicial]

  • El opcional tercer argumento solamente es soportado en la segunda sintaxis (sintaxis de coma)
  • La cadena alfanumérica vacía es considerada una subcadena de cualquier cadena alfanumérica. Por lo tanto, si subcadena es ” (una cadena vacía) y cadena_alfanumérica no es NULL, el resultado es:

* 1 si posición_inicial no se especificó

* posición_inicial si posición_inicial cabe dentro de cadena_alfanumérica

* 0 si posición_inicial es mayor que la cantidad de caracteres de cadena_alfanumérica

Ejemplos:

SELECT
   POSITION('POLE' IN 'NAPOLEÓN')
FROM
   RDB$DATABASE

* Devolverá 3 porque 'POLE' se encuentra a partir del tercer carácter de 'NAPOLEÓN'

SELECT
   POSITION('L' IN 'NAPOLEÓN')
FROM
   RDB$DATABASE

* Devolverá 5 porque la letra 'L' se encuentra en el quinto carácter de 'NAPOLEÓN'

SELECT
   POSITION('M' IN 'NAPOLEÓN')
FROM
   RDB$DATABASE

* Devolverá 0 porque la letra 'M' no se encuentra dentro de la palabra 'NAPOLEÓN'

PI()

1 comentario

Descripción: Devuelve un valor aproximado al número PI

Tipo de resultado: Doble precisión

Sintaxis:

PI()

Ejemplo:

SELECT
   PI()
FROM
   RDB$DATABASE

OVERLAY()

3 comentarios

Descripción: Sobreescribe parte de una cadena alfanumérica con parte de otra cadena alfanumérica. Por defecto, la cantidad de caracteres removidos de la cadena destino es igual a la longitud de la cadena reemplazante. Si se usa el opcional cuarto argumento, la cantidad puede ser diferente.

Tipo de resultado: Varchar o Blog

Sintaxis:

OVERLAY(cadena_alfanumérica PLACING reemplazo FROM posición [FOR longitud])

  • Esta función soporta BLOBS de cualquier longitud
  • Si cadena_alfanumérica o reemplazo es un BLOB, el resultado es un BLOB. En los demás casos el resultado es un Varchar(n) donde n es la suma de las longitudes de cadena_alfanumérica y reemplazo.
  • Como es usual en las funciones SQL, posición tiene base 1
  • Si posición es mayor que la longitud de cadena_alfanumérica entonces reemplazo es colocado a continuación de la cadena_alfanumérica
  • Si la cantidad de caracteres entre posición y el final de la cadena_alfanumérica es menor que la longitud de reemplazo (o que el argumento longitud, si está presente), cadena_alfanumérica es truncada a posición y reemplazo es localizado a continuación.
  • El efecto de una clásula “FOR 0” es que reemplazo es simplemente insertado en cadena_alfanumérica
  • Si cualquiera de los argumentos es NULL, el resultado es NULL
  • Si posición o longitud no son números enteros entonces el “redondeo de los banqueros” (redondeo al par más próximo) es usado: 0.5 se convierte en 0, 1.5 se convierte en 2, 2.5 se convierte en 2, 3.5 se convierte en 4, etc.

Ejemplos:

SELECT
   OVERLAY('NAPOLEÓN' PLACING 'GATO' FROM 5)
FROM
   RDB$DATABASE

* Devolverá NAPOGATO

SELECT
   OVERLAY('NAPOLEÓN' PLACING 'TIGRE' FROM 5)
FROM
   RDB$DATABASE

* Devolverá NAPOTIGRE

SELECT
   OVERLAY('NAPOLEÓN' PLACING 'CASI' FROM 1)
FROM
   RDB$DATABASE

* Devolverá CASILEÓN

.

OCTET_LENGTH()

1 comentario

Descripción: Devuelve la cantidad en bytes de la cadena de entrada. Para conjuntos de caracteres multi-bytes (como los usados en los lenguajes asiáticos) este puede ser menos que el número de caracteres multiplicado por el “formal” número de bytes por carácter como se encuentra en RDB$CHARACTER_SETS

Tipo de resultado: Integer

Sintaxis:

OCTET_LENGTH(cadena_alfanumérica)

Ejemplo:

SELECT
   OCTET_LENGTH('Fátima')
FROM
   RDB$DATABASE

Este SELECT devolverá 6 porque esa es la cantidad de bytes que tiene la palabra ‘Fátima’.

.

 

NULLIF()

1 comentario

Descripción: Devuelve el valor del primer argumento, a no ser que sea igual que el segundo, en ese caso NULL es devuelto

Tipo de resultado: Depende de los argumentos

Sintaxis:

NULLIF(expresión1, expresión2)

Ejemplo:

SELECT
   AVG(NULLIF(PESO, -1))
FROM
   PERSONAS

Este SELECT mostrará el peso promedio de las personas excluyendo a aquellas que tienen un peso de -1, ya que la función AVG() saltea a los valores NULL. Presumiblemente -1 indica “peso desconocido” en la tabla de PERSONAS. Si no se hubiera usado la función NULLIF() entonces la función AVG() promediaría a quienes tienen un peso de -1 también, y el resultado sería incorrecto.

.