es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Seleccionar las primeras y últimas tres cadenas de la columna para la condición SQL

Mi objetivo es seleccionar todas las columnas que comienzan y terminan con las mismas 3 cadenas que la primera fila.

En este caso fue sencillo, ya que CONCAT era igual a ‘SCLMIA’.

AND CONCAT(origin, destination) = 'SCLMIA'
AND ((flight_path LIKE '%SCL%' AND flight_path LIKE '%MIA%')

Pero ahora la dificultad es para múltiples cadenas.

AND CONCAT(origin, destination) IN ('SCLMIA', 'SCLIQQ','SCLMAD', 'LIMCUZ', 'BOGMDE', 'FORGRU', 'SDUCGH', 'SCLGRU', 'BOGLIM', 'GYEUIO')
AND (**aquí necesito replicar lo mismo que arriba**)

He leído que se puede hacer con las funciones SUBSTRING, LEFT y RIGHT seleccionando las tres primeras y últimas cadenas, pero no sé cómo hacerlo.

Intenté con esto, pero falló:

AND (flight_path LIKE '%' + SUBSTR(flight_path,3, LENGTH(flight_path) - 4) + '%')

Debe tenerse en cuenta que es una cadena de condiciones, por eso comienza con AND.

Edit:

Imagen: Muestra de datos con una sola ruta ‘SCLMIA’
Es de Bigquery.

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para seleccionar todas las columnas que comienzan y terminan con las mismas 3 cadenas de caracteres que la primera fila, puedes utilizar la función SUBSTRING en combinación con las funciones LEFT y RIGHT.

    Primero, necesitas extraer los primeros y últimos 3 caracteres de la columna flight_path para la primera fila. Puedes hacer esto con la siguiente consulta:

    SELECT 
      SUBSTRING(flight_path, 1, 3) AS inicio,
      SUBSTRING(flight_path, -3) AS fin
    FROM 
      [tu_tabla]
    LIMIT 1
    

    Esto te dará los primeros 3 caracteres (inicio) y los últimos 3 caracteres (fin) de la columna flight_path para la primera fila.

    A continuación, puedes utilizar los valores de inicio y fin para filtrar el resto de las filas. Aquí tienes un ejemplo:

    SELECT 
      *
    FROM 
      [tu_tabla]
    WHERE 
      CONCAT(origin, destination) IN ('SCLMIA', 'SCLIQQ', 'SCLMAD', 'LIMCUZ', 'BOGMDE', 'FORGRU', 'SDUCGH', 'SCLGRU', 'BOGLIM', 'GYEUIO') 
      AND SUBSTRING(flight_path, 1, 3) = 'SCL'
      AND SUBSTRING(flight_path, -3) = 'MIA'
    

    Esto seleccionará todas las filas donde el origen y el destino se encuentren en la lista especificada y donde flight_path comienza con ‘SCL’ y termina con ‘MIA’. Puedes ajustar los valores de inicio y fin para que coincidan con la primera fila de tus datos.

Comments are closed.