none
TSQL valori varbinary RRS feed

  • Domanda

  • che voi sappiate esiste un metodo per assegnare in TSQL uno specific valore tinyint a una certa posizione di un varbinary ??

    reverse  e concat non funzionano e replace non c'è  e non c'è neppure una setat

    p.s.il manuale di TSQL sembra essere come le leggi dei medi e dei persiani scolpite nella pietra , non è inserito neppure nel translation wiki


    claudio cannella



    • Modificato opaklaus mercoledì 12 aprile 2017 12:05
    mercoledì 12 aprile 2017 12:02

Risposte

  • che voi sappiate esiste un metodo per assegnare in TSQL uno specific valore tinyint a una certa posizione di un varbinary ??

    reverse  e concat non funzionano e replace non c'è  e non c'è neppure una setat

    p.s.il manuale di TSQL sembra essere come le leggi dei medi e dei persiani scolpite nella pietra , non è inserito neppure nel translation wiki


    claudio cannella



    Ciao Claudio,

    se ho capito bene potresti fare in questo modo:

    DECLARE @x Varbinary(16);
    DECLARE @i Tinyint;
    DECLARE @y Varchar(32);
    
    -- assegno un valore alla variabile varbinary
    SET @x = 0x00AA00AA00AA00AA00AA00AA00AA00AA
    -- assegno un valore alla variabile tinyint
    SET @i=128;
    
    --Converto la variabile varbinary in varchar(32)
    SET @y = Convert(Varchar(32),@x,2);
    
    -- Out prima della modifica
    SELECT @x as x_Prima
    
    
    --Modifico il 10^ byte e inserisco il valore della variabile Tinyint 
    SET @y=STUFF(@y,13,2,Convert(Varchar(2),Convert(Varbinary,@i),2))
    
    SET @X=Convert(Varbinary(16),@y,2)
    
    -- Out dopo la modifica
    SELECT @x as x_Dopo
    
    /*
    
    x_Prima
    ----------------------------------
    0x00AA00AA00AA00AA00AA00AA00AA00AA
    
    (Righe interessate: 1)
    
    x_Dopo
    ----------------------------------
    0x00AA00AA00AA80AA00AA00AA00AA00AA
    
    (Righe interessate: 1)
    
    
    */


    Ciao
    Giorgio


    venerdì 14 aprile 2017 07:08
    Moderatore

Tutte le risposte

  • hai già visto qui

    https://www.simple-talk.com/sql/t-sql-programming/bitwise-operations-in-t-sql/ ?


    Edoardo Benussi
    Microsoft MVP - Cloud and Datacenter Management
    edo[at]mvps[dot]org

    mercoledì 12 aprile 2017 14:06
    Moderatore
  • non sapevo dell'articolo ma non è quello che sto cercando di fare

    la cosa che ho in mente assomiglia alla memncpy del c++

    e  in realtà mi seervirebbe per sapere in quale  formato è memorizzata una variabile di tipo datetime2 e se ha qualc he relazione  con il risultato della funzione c getsystemtimepreciseasfiletime

    perchè vorrei infilare queste variabili nel db senza convertirle


    claudio cannella

    giovedì 13 aprile 2017 20:01
  • che voi sappiate esiste un metodo per assegnare in TSQL uno specific valore tinyint a una certa posizione di un varbinary ??

    reverse  e concat non funzionano e replace non c'è  e non c'è neppure una setat

    p.s.il manuale di TSQL sembra essere come le leggi dei medi e dei persiani scolpite nella pietra , non è inserito neppure nel translation wiki


    claudio cannella



    Ciao Claudio,

    se ho capito bene potresti fare in questo modo:

    DECLARE @x Varbinary(16);
    DECLARE @i Tinyint;
    DECLARE @y Varchar(32);
    
    -- assegno un valore alla variabile varbinary
    SET @x = 0x00AA00AA00AA00AA00AA00AA00AA00AA
    -- assegno un valore alla variabile tinyint
    SET @i=128;
    
    --Converto la variabile varbinary in varchar(32)
    SET @y = Convert(Varchar(32),@x,2);
    
    -- Out prima della modifica
    SELECT @x as x_Prima
    
    
    --Modifico il 10^ byte e inserisco il valore della variabile Tinyint 
    SET @y=STUFF(@y,13,2,Convert(Varchar(2),Convert(Varbinary,@i),2))
    
    SET @X=Convert(Varbinary(16),@y,2)
    
    -- Out dopo la modifica
    SELECT @x as x_Dopo
    
    /*
    
    x_Prima
    ----------------------------------
    0x00AA00AA00AA00AA00AA00AA00AA00AA
    
    (Righe interessate: 1)
    
    x_Dopo
    ----------------------------------
    0x00AA00AA00AA80AA00AA00AA00AA00AA
    
    (Righe interessate: 1)
    
    
    */


    Ciao
    Giorgio


    venerdì 14 aprile 2017 07:08
    Moderatore
  • assomiglia molto a quello che ho chiesto ma sembra farraginoso


    claudio cannella

    domenica 16 aprile 2017 18:47
  • assomiglia molto a quello che ho chiesto ma sembra farraginoso


    claudio cannella

    Probabilmente sì visto che bisogna passare da una variabile di tipo stringa ma MsSqlServer si occupa di database, un'istruzione che faccia direttamente quello che cerchi mi sembra fuori ambito.
    :-)
    Giorgio Rancati

    domenica 16 aprile 2017 21:20
    Moderatore