none
substring returno blank / 0 RRS feed

  • Domanda

  • Giorno,
    ho questo problema su SQL SERVER 2014 e 2017 Enterprise:

    declare @pippo VARCHAR(MAX) = '55555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555999555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555599955555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555999'
    
    SELECT SUBSTRING(@pippo,256,10) as test1
    SELECT SUBSTRING(@pippo,100,10) as test2

    se la eseguo dal classico management il risultato è perfetto, se metto in debug ed interrogo da FinestraImmediata
    test1 ritorna BLANK
    mentre
    test2 mi restituisce correttamente il valore.
    E' come se legga la stringa fino a 256 caratteri e non di +.
    Avendo degli script che contengono variabili che vengono popolate da parti di stringa oltre il 256 carattere
    mi sta andando tutto in errore.
    Potete aiutarmi per favore.

    vi inserisco le immagini senza e con debug

    con debug invece:

    Emanuele


    Emanuele

    venerdì 27 settembre 2019 08:18

Risposte

  • Ciao Emanuele,

    >> Avendo degli script che contengono variabili che vengono popolate da parti di stringa oltre il 256 carattere mi sta

    >> andando tutto in errore

    come vengono assegnate le variabili che contengono le parti di stringa oltre il 256-esimo carattere?

    Ho provato con assegnazione diretta, nell'esempio la variabile @substring_of_pippo, e funziona:

    declare @pippo VARCHAR(MAX) = '55555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555999555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555599955555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555999'
    declare @substring_of_pippo VARCHAR(MAX) = ''
    SELECT @substring_of_pippo = SUBSTRING(@pippo,256,10)
    
    SELECT SUBSTRING(@pippo,256,10) as test1
    SELECT SUBSTRING(@pippo,100,10) as test2

    Ciao!


    Sergio Govoni

    Microsoft Data Platform MVP | MVP Profile | English Blog | Twitter | LinkedIn


    sabato 28 settembre 2019 21:43
    Moderatore

Tutte le risposte

  • Ciao Emanuele,

    >> Avendo degli script che contengono variabili che vengono popolate da parti di stringa oltre il 256 carattere mi sta

    >> andando tutto in errore

    come vengono assegnate le variabili che contengono le parti di stringa oltre il 256-esimo carattere?

    Ho provato con assegnazione diretta, nell'esempio la variabile @substring_of_pippo, e funziona:

    declare @pippo VARCHAR(MAX) = '55555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555999555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555599955555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555999'
    declare @substring_of_pippo VARCHAR(MAX) = ''
    SELECT @substring_of_pippo = SUBSTRING(@pippo,256,10)
    
    SELECT SUBSTRING(@pippo,256,10) as test1
    SELECT SUBSTRING(@pippo,100,10) as test2

    Ciao!


    Sergio Govoni

    Microsoft Data Platform MVP | MVP Profile | English Blog | Twitter | LinkedIn


    sabato 28 settembre 2019 21:43
    Moderatore
  • Ciao,

    il problema è nel DEBUG, è da li che dà i numeri SQL.

    Se fate una prova vedete.

    Buon lavoro a tutti


    Emanuele

    lunedì 30 settembre 2019 07:59