none
TSQL - Hexadecimal RRS feed

  • Pergunta

  • Bom Pessoal,

    Estou com uma dúvida em T-SQL:
    Tenho em meu BD um campo chamado Comando as VARCHAR, este campo guarda o comando que configura o equipamento e está salvo em hexadecimal.
    Até hoje, meu programa pega as variáveis e converte para HEX, sem problema.

    Mas estou precisando fazer o caminho inverso, de HEX para INT

    Sei que os comandos abaixo funcionam

    SELECT CAST(0x0193 as INT)
    SELECT CAST(403 as VARBINARY)

    Mas como o campo Comando é Varchar, preciso dar um cast as varbinary e nao consigo setar a variável varbinary com o valor correto.

    Segue exemplo:

    --CERTO
    DECLARE @HEX VARBINARY(8) SET @HEX = 0x193
    SELECT CAST(@HEX as INT)

    --ERRADO
    DECLARE @HEX VARBINARY(8) SET @HEX = CAST('0x193' as VARBINARY)
    SELECT CAST(@HEX as INT)

    Alguma sugestão?

    att,
    GH
    • Movido Gustavo Maia Aguiar quarta-feira, 9 de setembro de 2009 20:29 (De:SQL Server - Desenvolvimento Geral)
    quarta-feira, 9 de setembro de 2009 14:52

Respostas

Todas as Respostas

  • Bom Dia,

    Dúvida bem interessante. Veja se ajuda

    DECLARE @SQL AS NVARCHAR(50),
      @HEXB AS VARBINARY(10), @HEXV AS VARCHAR(10);
    SET @HEXV = '0x193';
    SET @sql = N'SET @o = ' + @HEXV + N';';
    EXEC sp_executesql
      @STMT = @SQL,
      @PARAMS = N'@o AS VARBINARY(1000) OUTPUT',
      @o = @HEXB OUTPUT;
    SELECT @HEXB;


    [ ]s,

    Gustavo Maia Aguiar
    http://gustavomaiaaguiar.spaces.live.com

    Unique Constraints – Aplicações, Alternativas e um lapso "justificável" do SQL Server
    http://gustavomaiaaguiar.spaces.live.com/blog/cns!F4F5C630410B9865!710.entry


    Classifique as respostas. O seu feedback é imprescindível
    quarta-feira, 9 de setembro de 2009 16:18
  • Gustavo,


    Opa...é isso ae !!!
    Estava pensando em utilizar o comando EXEC () , mas o seu código já resolve minha dúvida.

    grato,
    GH
    quarta-feira, 9 de setembro de 2009 18:23
  • Guilherme,

    O segredo deste script esta na utilização do datatype VarBinary, para realizar a conversão dos valores para Hexadecimal de forma implicita.
    Pedro Antonio Galvão Junior - MVP - Windows Server System - SQL Server/Coordenador de Projetos/DBA
    quinta-feira, 10 de setembro de 2009 17:50