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!
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:
Esto debería darte el resultado deseado. ¡Avísame si tienes alguna otra pregunta!