RISOLTO [SQL] Variazione da varchar a int, con tabella popolata

Stato
Discussione chiusa ad ulteriori risposte.

jNash

Utente Attivo
1,327
105
Buongiorno,
ho una tabella con un migliaio di records.
Una colonna è di tipo varchar e vorrei farla diventare int, perché contenendo solo degli interi, non riesco a ordinarli in ordine decrescente (es. mi ritrovo 8-6-2-10).
Poichè solo una parte dei records è inizializzato su quella colonna, cioè ha un valore, la quasi totalità non ha alcun numero, tutti i tentativi che ho fatto attraverso ALTER TABLE... mi danno errore al primo records incontrato con valore non assegnato.
Come posso risolvere? Grazie.
 
Ultima modifica:

Ibernato

Utente Èlite
4,328
2,047
OS
Windows 10 Pro / Ubuntu 22.04
Buongiorno,
ho una tabella con un migliaio di records.
Una colonna è di tipo varchar e vorrei farla diventare int, perché contenendo solo degli interi, non riesco a ordinarli in ordine decrescente (es. mi ritrovo 8-6-2-10).
Poichè solo una parte dei records è inizializzato su quella colonna, cioè ha un valore, la quasi totalità non ha alcun numero, tutti i tentativi che ho fatto attraverso ALTER TABLE... mi danno errore al primo records incontrato con valore non assegnato.
Come posso risolvere? Grazie.
Prova a modificare la struttura della tabela mettendo che quel campo può essere null
Inoltre, l'alter table funziona solo se
- tutti i dati possono essere convertiti in int (cioè un valore di "stringa" fallirà)
- non ci sono indici che includono quel campo
 

Andretti60

Utente Èlite
6,440
5,091
Potresti usare un CAST che include un COALESCE.
coalesce viene usato in casi come questo, gli passi due valori, primo il campo che vuoi convertire e il secondo zero, poi fai il Cast to integer.
 
  • Mi piace
Reazioni: Moffetta88

jNash

Utente Attivo
1,327
105
Prova a modificare la struttura della tabela mettendo che quel campo può essere null
Inoltre, l'alter table funziona solo se
- tutti i dati possono essere convertiti in int (cioè un valore di "stringa" fallirà)
- non ci sono indici che includono quel campo
Dopo aver impostato NULL, quando provo a cambiare da VARCHAR a INT, mi dà errore al primo valore "", cioè non inizializzato.
Ho solo una decina di records con valore da 1 a 10. Non ci sono indici su quel campo.

Edit: ho risolto così. Ho modificato i records "" in 0. Poi ho potuto fare la variazione da varchar a int.
Grazie a tutti.
 
Ultima modifica:
Stato
Discussione chiusa ad ulteriori risposte.

Entra

oppure Accedi utilizzando
Discord Ufficiale Entra ora!