2011-11-02 25 views
13

Tôi có một bảng có tên cột như 25, 50, 100, vv ..Số có thể được sử dụng để đặt tên cho cột bảng MySQL không?

Khi cố gắng để cập nhật các bảng tôi nhận được một lỗi, không có vấn đề làm thế nào tôi làm điều đó

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

Tôi có đã cố gắng trích dẫn và quay lại mọi cách nhưng không thành công.

Các lỗi luôn nằm dọc theo dòng:

Bạn có một lỗi trong cú pháp SQL của bạn; kiểm tra hướng dẫn tương ứng với phiên bản máy chủ MySQL của bạn cho cú pháp đúng để sử dụng gần '' 25 '= 100 WHERE id = 1' tại dòng 1

Nếu tôi đổi tên cột thành twentyfive - Tôi không có vấn đề, nhưng đó không phải là điều tôi muốn. Có thể sử dụng một số làm tên cột không?

+1

Tôi đã cung cấp câu trả lời, nhưng tôi vẫn muốn nói rằng tôi nghĩ rằng sử dụng tên trường số là một chút không chính thống, và tôi muốn có xu hướng chỉ tiền tố các trường. – Matthew

+0

tham chiếu đến bài đăng này, http://stackoverflow.com/questions/41711470/laravel-how-to-access-column-with-number-name-of-a-table –

Trả lời

34

Từ the docs:

định danh có thể bắt đầu bằng một chữ số nhưng trừ khi trích dẫn có thể không bao gồm duy nhất của chữ số.

Có nghĩa là bạn phải trích dẫn nó với lại ve như `25`:

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

Cảm ơn. Sau khi đọc một số tôi đồng ý, tiền tố cột là một thực hành tốt hơn. –

2

Nếu bạn cần nó dựa trên một số vì lý do nào đó, bạn có thể thêm một số tiền tố đơn giản vào số trong tất cả các trường hợp (ví dụ: "col25", "col87", v.v.).

+1

Điều này không đúng trong MySQL. –

-1

Names trong MySQL có thể bắt đầu bằng một chữ số, nhưng không thể hoàn toàn chữ số - họ không thể confusable với một số nguyên. Vì vậy, không.

Và nếu bạn bắt đầu số nhận dạng bằng chữ số, bạn nên chắc chắn bạn đang gắn bó với MySQL vì nhiều (hầu hết?) Các công cụ cơ sở dữ liệu khác yêu cầu ký tự alpha ở phía trước tên cột.

(Như đã nêu trong các nhận xét, tên cột đầy đủ số nguyên được phép nếu bạn liên tục sử dụng ký tự backtick - nếu bạn đã thử backticks và vẫn gặp lỗi cú pháp, hãy đăng cú pháp chính xác mà bạn đã sử dụng).

Ngoài ra, tất nhiên, bạn sẽ tạo ra một số khó khăn để đọc SQL nếu bạn chọn cột nguyên có tên!

+1

Bạn có chắc chắn về điều đó không? Tôi vừa mới tạo ra một bảng có tên là '1' với một cột có tên là' 2', tôi phải tự do áp dụng backticks. –

+0

Điều này không đúng trong MySQL. ;) – Matthew

+1

Thật vậy, bạn đều chính xác (tài liệu MySQL tốt hơn tại informit.com). –

1

Kiểm tra ở đây: http://dev.mysql.com/doc/refman/5.0/en/identifiers.html

định danh có thể bắt đầu bằng một chữ số nhưng trừ khi trích dẫn có thể không bao gồm chỉ của chữ số.

Vì vậy, bạn có thể làm điều đó - bạn cần sử dụng backtics xung quanh tên.

3

Như những người khác đã nói, bạn có thể back-đánh dấu vào tên các bảng, cột, vv Chỉ cần chắc chắn rằng bạn đang không back-ticking giá trị của bạn nếu không nó sẽ giải thích cho họ như tên cột.Vì vậy, trong ví dụ của bạn chỉ có 25 cần phải được chọn lại:

UPDATE table SET `25`=100 WHERE id=1 
Các vấn đề liên quan