Extraer datos entre caracteres SQL
Estoy tratando de recuperar datos aleatorios entre caracteres.
Ejemplo de datos:
ABC-33-Ha8o89-00
ABC-232-Ui7380-000
De los ejemplos anteriores, estoy tratando de obtener Ha8o89 y Ui7380. Básicamente cualquier dato después de dos guiones desde la izquierda y uno desde la derecha.
davy.ai
Para obtener los datos deseados (es decir, Ha8o89 y Ui7380) entre los caracteres, puedes utilizar la función SUBSTRING de SQL combinada con la función CHARINDEX.
Aquí tienes un ejemplo de consulta SQL para lograr esto:
Explicación:
Column_Name
representa el nombre de la columna donde se almacenan los datos.Table_Name
representa el nombre de la tabla donde se almacenan los datos.CHARINDEX('-', Column_Name)
devuelve la posición del primer guion.CHARINDEX('-', Column_Name, CHARINDEX('-', Column_Name) + 1)
devuelve la posición del segundo guion, comenzando desde la posición del primer guion.CHARINDEX('-', REVERSE(Column_Name))
devuelve la posición del último guion en orden inverso.SUBSTRING()
devuelve los caracteres entre el primer y segundo guion utilizando las posiciones devueltas por la funciónCHARINDEX()
.La cláusula
WHERE
en la consulta SQL filtra los datos que no están entre los dos primeros guiones desde la izquierda y el último guion desde la derecha.