Cách chọn tên cột có khoảng trắng trong MySQL [trùng lặp]


90

Tôi đang làm việc trong một dự án nơi một nhà phát triển khác đã tạo một bảng với các tên cột như 'Business Name'. Đó là khoảng cách giữa hai từ. Nếu tôi chạy một SELECTcâu lệnh có 'Tên doanh nghiệp', nó cho biết không có cột nào có tên 'Doanh nghiệp'.

Làm thế nào tôi có thể giải quyết vấn đề này?


Tôi không có đủ danh tiếng để nhận xét đúng, vì vậy được gắn thẻ ở cuối: Giải pháp được đăng ở trên trong phần nhận xét: `crazy_table`.` Tên doanh nghiệp` không hoạt động với tôi trong mySQL trong câu lệnh where. Thả các dấu ngoặc kép trở lại trên bảng tên công việc đã làm: tức là annoying_table.`Business Name`
Tim0th1

Câu trả lời:


158

Nói chung, bước đầu tiên là không làm điều đó ngay từ đầu, nhưng nếu điều này đã được thực hiện, thì bạn cần phải sử dụng đến trích dẫn đúng tên cột của mình:

SELECT `Business Name` FROM annoying_table

Thông thường những thứ này được tạo ra bởi những người đã sử dụng một thứ gì đó như Microsoft Access và luôn sử dụng GUI để thực hiện công việc của họ.


@tadman Nếu tôi sao chép và dán truy vấn của bạn, nó hoạt động nhưng nếu tôi nhập một câu trích dẫn từ bàn phím thì nó không hoạt động. I E. CHỌN 'Tên doanh nghiệp' FROM
phiền_bảng

17
Đó là bởi vì nó là dấu ngoặc kép không đơn nhưng thay vì đánh dấu những biểu tượng mà bạn thường có thể tìm thấy trên bàn phím của bạn sang trái từ chữ số 1.
peterm

5
Có ba loại dấu ngoặc kép, đơn ', kép "và ngược `. Trong MySQL, hai phần đầu tương đương nhau và có thể được sử dụng thay thế cho nhau. Điều này không phải lúc nào cũng xảy ra trên các nền tảng khác và Postgres nói riêng đối xử với chúng theo cách khác. Các dấu gạch ngược chỉ được sử dụng để thoát tên cột hoặc cơ sở dữ liệu.
tadman

dấu ngoặc [] không phù hợp với tôi. Không có lỗi nhưng chỉ không hiển thị nó. Mặt khác, hoạt động tuyệt vời.
Jay

1
@Robert Sau đó, bạn sẽ viết nó như thế này: `crazy_table`. 'Tên doanh nghiệp`.
Erik Čerpnjak

20

Nếu dấu ngoặc kép không hoạt động, hãy thử bao gồm chuỗi trong dấu ngoặc vuông.

Ví dụ:

SELECT "Business Name","Other Name" FROM your_Table

có thể được thay đổi như

SELECT [Business Name],[Other Name] FROM your_Table


16

Bạn cần sử dụng biểu tượng nền thay vì dấu ngoặc kép:

Trích dẫn đơn - 'Business Name'- Sai

Backtick - `Business Name`- Đúng


3

Đối với mỗi người riêng của mình nhưng cách đúng để viết mã này là đổi tên các cột chèn gạch dưới để không có khoảng trống. Điều này sẽ đảm bảo không có lỗi khi mã hóa. Khi in tên cột để hiển thị công khai, bạn có thể tìm kiếm và thay thế để thay thế dấu gạch dưới bằng dấu cách.


0

Đối với MS Access, dấu ngoặc vuông hoạt động và dấu gạch ngược gây ra tất cả các loại lỗi wierd, như "Tên truy vấn không hợp lệ: Query1"

Nó sẽ giống như thế này

SELECT Customer.[Customer ID], Customer.[Full Name] ...

-3

Tôi nghĩ rằng dấu ngoặc kép cũng hoạt động:

SELECT "Business Name","Other Name" FROM your_Table

Nhưng tôi chỉ thử nghiệm trên SQL Server KHÔNG phải mySQL trong trường hợp ai đó làm việc với MS SQL Server.


5
Điều này sẽ luôn chọn chuỗi "Tên doanh nghiệp", không phải nội dung của cột.
JonasB

@JonasB Vui lòng kiểm tra lại, tôi đã sử dụng báo giá kép không phải báo giá đơn .... Báo giá đơn sẽ dẫn đến chuỗi, trích dẫn kép sẽ không.
Vin.X

Câu hỏi đặc biệt là về MySQL và trên máy chủ MySQL có cài đặt tiêu chuẩn, dấu ngoặc kép và dấu nháy đơn là tương đương nhau. Xem câu trả lời này để biết thêm thông tin tại sao lại là một ý tưởng tồi khi sử dụng dấu ngoặc kép trong MySQL: stackoverflow.com/a/14123649/4172652
JonasB 18/04 '19
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.