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.

Encontrar una parte de una cadena y extraer datos entre delimitadores utilizando BigQuery SQL

Tengo una columna como esta:

StringtoExtract
A~S1B~S2C~S11
A~S1B~S3C~S12
C~S13A~S11B~S4

La parte antes del “~” debería ser el nombre de la columna. La parte después del “~” debería ser el valor de la fila. Están separados por un “_”. Por lo tanto, el resultado debería lucir así:

StringtoExtract A B C
A~S1B~S2C~S11 S1 S2 S11
A~S1B~S3C~S12 S1 S3 S12
C~S13A~S11B~S4 S11 S4 S13

Esta es mi aproximación:

SELECT
String_to_Extract,
SUBSTRING(String_to_Extract, INSTR(Advertiser, “A~”)+2, ?) AS A,
SUBSTRING(String_to_Extract, INSTR(Advertiser, “B~”)+2, ?) AS B,
SUBSTRING(String_to_Extract, INSTR(Advertiser, “C~”)+2, ?) AS C,
From Table

¿Cómo obtengo la parte entre el “~” y el siguiente “_” para cada columna?

¡Agradecería ayuda!

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Para obtener la parte entre el ~ y el siguiente _, puedes utilizar la función SUBSTRING_INDEX en MySQL. Aquí tienes una consulta actualizada que debería funcionar:

    SELECT
    String_to_Extract,
    SUBSTRING_INDEX(SUBSTRING_INDEX(String_to_Extract, '_A~', -1), '_', 1) AS A,
    SUBSTRING_INDEX(SUBSTRING_INDEX(String_to_Extract, '_B~', -1), '_', 1) AS B,
    SUBSTRING_INDEX(SUBSTRING_INDEX(String_to_Extract, '_C~', -1), '_', 1) AS C
    FROM Table
    

    Esto debería darte el resultado deseado. ¡Avísame si tienes alguna otra pregunta!

Comments are closed.