2010-05-25 30 views

Trả lời

11

Đối với MySQL, hãy sử dụng bọ ve `.

Ví dụ:

SELECT `column`, `column2` FROM `table` 
15

Đối với MS SQL sử dụng [và]

SELECT [COLUMN], [COLUMN 2] FROM [TABLE] 
+1

bạn có thể có khoảng trống trong tên cột với ms sql!?! –

+2

bạn có thể! Tôi sẽ không, mặc dù. – JMP

+1

Có, bạn có thể có dấu cách hoặc các từ dành riêng làm tên thực thể trong MSSQL. Bạn chỉ cần [] chúng. – BoltBait

64

SQL-99 tiêu chuẩn specifies rằng kép (") được sử dụng để phân định danh

. Oracle, PostgreSQL, MySQL, MSSQL và SQlite tất cả hỗ trợ "làm dấu phân cách định danh (mặc dù chúng không sử dụng" làm 'mặc định' - ví dụ, bạn phải chạy MySQL trong ANSI mode và SQL Server chỉ hỗ trợ nó khi QUOTED_IDENTIFIERON.)

49

Theo SQLite,

  • 'foo' là một chuỗi SQL
  • "foo" là một định danh SQL (cột/bảng/etc)
  • [foo] là số nhận dạng trong MS SQL
  • `foo` là số nhận dạng trong MySQL

Đối với tên tiêu chuẩn, cú pháp là: "t"."foo" hay [t].[foo] vv

MySQL hỗ trợ chuẩn "foo" khi tùy chọn ANSI_QUOTES được kích hoạt.

+3

Lưu ý rằng SQLite cho phép ''foo'' được hiểu là mã định danh nếu ngữ cảnh không cho phép chuỗi và' "foo" 'được hiểu là chuỗi nếu ngữ cảnh không cho phép mã định danh, mặc dù là một lưu ý rằng hành vi này có thể bị xóa trong các phiên bản sau. – thomasrutter

+0

Vì vậy, làm thế nào để bạn làm "t". *? – Loenix

+1

@thomasrutter Yeah Tôi hoàn toàn bị cắn bởi hành vi này ... Cố gắng sử dụng "WHERE" nonexistent_column "= 0' và sqlite vui vẻ thực thi nó giả vờ rằng' 'nonexistent_column" 'của tôi là một chuỗi. Hoàn toàn đủ điều kiện tên là "" my_table "." Nonexistent_column "' buộc sqlite phải hành xử nghiêm chỉnh hơn. – Rufflewind

1

Đối dBASE/DBF sử dụng []

SELECT [DATE], [TIME], [ANY_OTHER_TO_BE_ESCAPED_COLUMN] FROM [TABLE] 
Các vấn đề liên quan