none
Extraer texto RRS feed

  • Pregunta

  • Estimados.

    Tengo el siguiente string:

    Declare @Exp varchar(500)
    SET @Exp = 'SU=Sucursal UNO - TRANS,TR=COLOMBIA,TR=FILE,TR=AP,TR=CPECH'

    SELECT SUBSTRING(@Exp,CHARINDEX(',TR=',@Exp),LEN(@Exp))

    Devuelve:

    ,TR=COLOMBIA,TR=FILE,TR=AP,TR=CPECH

    Necesito quedarme con el dato de la ciudad, para este caso COLOMBIA.

    Las apariciones de ,TR= son variables y la ciudad son distintas.

    Tengo un ejemplo con While, pero quisiera hacerlo solo con un solo SELECT y no tener que recorrer, será posible ?

    Saludos.


    DBA SQL Server Santiago/Chile

    lunes, 7 de mayo de 2018 18:03

Todas las respuestas

  • Necesita dos posiciones:  La inicial y la final.  Su llamado a CharIndex() solamente devuelve la inicial.  Necesita la final también.

    Declare posIni int;
    Declare posFin int;
    
    Set @Exp = ...
    
    Set posIni = CharIndex('TR=', @Exp);
    Set posFin = CharIndex(',', @Exp, posIni);
    
    Select Substring(@Exp, posIni, posFin - posIni)


    Jose R. MCP
    Code Samples

    lunes, 7 de mayo de 2018 18:08
  • Hola CMAPM:

    Lo puedes hacer si tienes Sql 2016 con String_split

    https://docs.microsoft.com/es-es/sql/t-sql/functions/string-split-transact-sql?view=sql-server-2017

    Si no, me parece que tendrás que utlizar tu while, o una función de separación por palabras/tokens, porque seguro que esa cadena, mañana será otra.

    Un saludo

    lunes, 7 de mayo de 2018 18:19