none
Consulta Substring RRS feed

  • Pergunta

  • Pessoal, preciso fazer uma consulta que me retorne parte de um campo.

    ........<dhRecbto>2012-05-21T09:31:24</dhRecbto>......

    Preciso retornar a data e o horário desse texto, porém não existe nenhuma forma de verificar quantos caracteres tem antes, porque é variável, somente as tags iniciais e finais (<dhRecbto> e </dhRecbto> ). Tem como fazer isso ?

    Desde já agradeço.


    Gregorio

    segunda-feira, 21 de maio de 2012 19:58

Respostas

  • Deleted
    segunda-feira, 21 de maio de 2012 20:36
  • declare @text varchar(8000), @InicialString as int, @finalString as int
    
    set @InicialString = LEN('<dhRecbto>')
    set @finalString = LEN('/<dhRecbto>')
    
    set @text = '..234823948239fsdfjdske3409......<dhRecbto>2012-05-21T09:31:24</dhRecbto>...vfdghjr0938dwefsdhfjkds...'
    
    select SUBSTRING(
    		@text,charindex('<dhRecbto>' ,@text)+@InicialString,
    		(LEN(@text)- CHARINDEX('</dhRecbto>',@text)-@InicialString - @finalString)+1 ) 


    Eduardo Gomes - http://www.h1solucoes.com.br - Twitter: @edugp_sp

    segunda-feira, 21 de maio de 2012 20:39

Todas as Respostas

  • Deleted
    segunda-feira, 21 de maio de 2012 20:36
  • declare @text varchar(8000), @InicialString as int, @finalString as int
    
    set @InicialString = LEN('<dhRecbto>')
    set @finalString = LEN('/<dhRecbto>')
    
    set @text = '..234823948239fsdfjdske3409......<dhRecbto>2012-05-21T09:31:24</dhRecbto>...vfdghjr0938dwefsdhfjkds...'
    
    select SUBSTRING(
    		@text,charindex('<dhRecbto>' ,@text)+@InicialString,
    		(LEN(@text)- CHARINDEX('</dhRecbto>',@text)-@InicialString - @finalString)+1 ) 


    Eduardo Gomes - http://www.h1solucoes.com.br - Twitter: @edugp_sp

    segunda-feira, 21 de maio de 2012 20:39
  • Gregorio,

          Se isso é um XML é melhor você trabalhar com as ferramentas de XML do SQL Server...

          Veja um exemplo retirado do Books Online:

    DECLARE @idoc int
    DECLARE @doc varchar(1000)
    SET @doc ='
    <ROOT>
    <Customers CustomerID="VINET" ContactName="Paul Henriot">
       <Orders CustomerID="VINET" EmployeeID="5" OrderDate=
               "1996-07-04T00:00:00">
          <Order_x0020_Details OrderID="10248" ProductID="11" Quantity="12"/>
          <Order_x0020_Details OrderID="10248" ProductID="42" Quantity="10"/>
       </Orders>
    </Customers>
    <Customers CustomerID="LILAS" ContactName="Carlos Gonzlez">
       <Orders CustomerID="LILAS" EmployeeID="3" OrderDate=
               "1996-08-16T00:00:00">
          <Order_x0020_Details OrderID="10283" ProductID="72" Quantity="3"/>
       </Orders>
    </Customers>
    </ROOT>'
    --Create an internal representation of the XML document.
    EXEC sp_xml_preparedocument @idoc OUTPUT, @doc
    -- SELECT statement that uses the OPENXML rowset provider.
    SELECT    *
    FROM       OPENXML (@idoc, '/ROOT/Customers')
    EXEC sp_xml_removedocument @idoc

    Roberto Fonseca MCT / MCITP - Database Administrator 2008 MCITP - Database Developer 2008 MCITP - Business Intelligence 2008

    segunda-feira, 21 de maio de 2012 20:41
    Moderador