Visualizzazione risultati 1 fino 7 di 7

Discussione: Utilizzo delle funzioni regexp_substr e regexp_instr negato in mysql.

  1. #1
    simulaesame non è connesso Neofita
    Data registrazione
    18-04-2015
    Messaggi
    4

    Predefinito Utilizzo delle funzioni regexp_substr e regexp_instr negato in mysql.

    Buongiorno, con MySql ho necessità di estrarre un blocco di lettere posizionato SEMPRE all'inizio di un campo alfanumerico di 7 caratteri. Ho pensato di utilizzare la funzione MySql regexp_substr oppure, la funzione regexp_instr in questo modo:

    regexp_substr(numero, '^[[:alpha:]]+')

    oppure

    substr(numero, -7, regexp_instr(numero, '[[:digit:]]') - 1)

    A quanto pare però l'utilizzo di questi due comandi è negato. Ecco il messaggio di errore che ricevo:

    #1370 - execute command denied to user 'simulaesame'@'localhost' for routine 'my_simulaesame.regexp_substr'
    #1370 - execute command denied to user 'simulaesame'@'localhost' for routine 'my_simulaesame.regexp_instr'

    Qualcuno saprebbe come sbloccare l'utilizzo dei comandi oppure indicare un modo alternativo per risolvere il problema?
    Grazie!
    Ultima modifica di simulaesame : 02-02-2019 alle ore 12.44.27

  2. #2
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,686

    Predefinito

    Su AlterVista MYSQL è attualmente alla versione 5.6. Mi risulta che quelle funzioni siano disponibili nelle versioni successive.
    Ti consiglierei di estrarre i dati ed elaborarli tramite PHP.

    Ciao!

  3. #3
    simulaesame non è connesso Neofita
    Data registrazione
    18-04-2015
    Messaggi
    4

    Predefinito

    Citazione Originalmente inviato da alemoppo Visualizza messaggio
    Su AlterVista MYSQL è attualmente alla versione 5.6. Mi risulta che quelle funzioni siano disponibili nelle versioni successive.
    Ti consiglierei di estrarre i dati ed elaborarli tramite PHP.

    Ciao!
    Grazie per la risposta! Confermo che la versione di mysql in uso è proprio la 5.6! Avevo scartato la manipolazione via php perché questo comporterebbe ulteriori query dopo la manipolazione....tuttavia se non è possibile passare ad una versione successiva di mysql mi sa che non mi resta molta scelta!
    Grazie ancora per la risposta, saluti!

  4. #4
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,686

    Predefinito

    No purtroppo la versione di mysql è quella.
    Se hai un vecchio account con le limitazioni delle queries orarie, puoi rimuovere gratuitamente il limite dal pannello di controllo.

    Ciao!

  5. #5
    simulaesame non è connesso Neofita
    Data registrazione
    18-04-2015
    Messaggi
    4

    Predefinito

    Si grazie, mentre cercavo un modo per risolvere il problema regexp mi sono accorto che potevo rimuovere la limitazione gratuitamente e così l'ho fatto! Ieri ho anche ripensato alla manipolazione via php ma resta una soluzione davvero complicata.
    Al momento ho limitato i danni cercando la posizione del primo zero dalla seconda cifra da sinistra in poi in questo modo:

    substr(numero, -7, locate('0', numero, 2))

    il problema è che il blocco di lettere che devo estrarre potrebbe non essere seguito sempre da uno 0! In alternativa potrei annidare diversi if (al più 7) e testare le singole cifre che compongono il campo fino a quando non trovo il primo numero!

    Peccato perché regexp_substr sarebbe proprio perfetto!
    Non c'è possibilità di inserire solo quelle due funzioni alla versione 5.6?? Infondo l'errore si riferisce ad un problema di permessi, o almeno così pare, piuttosto che ad un comando sconosciuto!
    Ultima modifica di simulaesame : 03-02-2019 alle ore 12.23.07

  6. #6
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,686

  7. #7
    simulaesame non è connesso Neofita
    Data registrazione
    18-04-2015
    Messaggi
    4

    Predefinito

    Il tuo è un ottimo suggerimento se non fosse per il fatto che il risultato dell'espressione regolare mi serve per raggruppare i record di una query.... Il mio problema è (re)inserire i dati elaborati dal php all'interno della clausola 'GROUP BY' di una query. Per raggruppare io conosco SOLO questo modo:

    SELECT ... FROM ... WHERE ... GROUP BY <e qui andrei a piazzare il risultato della funzione regexp()>

    Te conosci altri modi? Se si, allora illuminami!
    Grazie!

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •