2011-11-02 14 views
13

Ho una tabella che ha nomi di colonna come 25, 50, 100, ecc ..È possibile utilizzare un numero per denominare una colonna della tabella MySQL?

Quando si cerca di aggiornare la tabella ottengo un errore, non importa come lo faccio

UPDATE table SET '25'='100' WHERE id = '1' 

ho ho provato a citare e a fare retromarcia in ogni direzione, ma senza successo.

L'errore è sempre lungo le linee di:

Hai un errore nella sintassi SQL; controllare il manuale che corrisponde alla versione del server MySQL per la sintassi diritto di utilizzare vicino a '' 25 '= 100 WHERE id = 1' at line 1

se cambio il nome della colonna a twentyfive - non lo faccio avere un problema, ma non è quello che voglio. È possibile utilizzare un numero come nome di colonna?

+1

ho fornito una risposta, ma mi piace ancora di dire che penso che usando nomi di campi numerici è un po 'poco ortodossa, e mi piacerebbe tendono a prefissare semplicemente i campi. – Matthew

+0

fare riferimento a questo post, http://stackoverflow.com/questions/41711470/laravel-how-to-access-column-with-number-name-of-a-table –

risposta

34

Da the docs:

identificatori possono iniziare con una cifra, ma a meno che non citato potrebbe non consistere unicamente di cifre.

Il che significa che è necessario citare con schiena zecche come `25`:

UPDATE table SET `25`='100' WHERE id='1' 
+1

Grazie. Dopo aver letto alcuni sono d'accordo, il prefisso della colonna è una pratica migliore. –

2

Se è necessario basarsi su un numero per qualche motivo, è possibile aggiungere un semplice prefisso al numero in tutti i casi (ad esempio "col25", "col87", ecc.).

+1

Questo non è vero in MySQL. –

-1

nomi in MySQL può iniziare con una cifra, ma non può essere interamente cifre - che non possono essere confondibile con un numero intero. Quindi, no.

E se si avvia l'identificatore con una cifra, si dovrebbe essere abbastanza sicuri di stare con MySQL perché molti (molti?) Altri motori di database richiedono un carattere alfa nella parte anteriore dei nomi delle colonne.

(Come indicato nei commenti, nome di una colonna completamente integer è ammessi se si utilizza sempre il carattere di apice inverso - se si è tentato backticks e ancora ricevuto un errore di sintassi, di pubblicare la sintassi backtick preciso è stato utilizzato).

Inoltre, ovviamente, produrrai un codice SQL di difficile lettura se scegli le colonne con un numero intero!

+1

Ne sei sicuro? Ho appena creato una tabella chiamata '1' con una colonna chiamata' 2', ho dovuto applicare liberamente i backtick, ovviamente. –

+0

Questo non è vero in MySQL. ;) – Matthew

+1

In effetti, siete entrambi corretti (la documentazione di MySQL è migliore rispetto a informit.com). –

3

Come altri hanno detto, è possibile eseguire il-barrare le nomi di tabelle, colonne, ecc Basta fare in modo che non stai back-ticchettio tuoi valori altrimenti sarete li interpretano come nomi delle colonne.Quindi nel tuo esempio, solo i 25 bisogni di essere di nuovo spuntato:

UPDATE table SET `25`=100 WHERE id=1 
Problemi correlati