2009-04-08 25 views
36

Trong khi chỉnh sửa, xây dựng, hoặc anh đào chọn từ các câu lệnh SQL tôi có thể thấy mình tương tác với một trong bốn công cụ cơ sở dữ liệu phổ biến. Tôi đã được sử dụng để bình luận dòng duy nhất cho DB2 và Informix. Tôi đã tạo ra macro trong vim để làm cho điều này một chút hiệu quả hơn nhưng tôi đã tự hỏi nếu tôi làm việc quá khó.Có các dấu phân cách nhận xét nhiều dòng trong SQL là nhà cung cấp không thuyết phục không?

+0

Vấn đề lớn với các dấu phân tách chú thích nhiều dòng không phải là tính di động; đó là không thể làm tổ. – Wildcard

Trả lời

41

Nhận xét kiểu C là tiêu chuẩn trong SQL 2003 và SQL 2008 (nhưng không phải trong SQL 1999 hoặc trước đó). DBMS sau tất cả sự ủng hộ C phong cách bình luận:

  • Informix
  • PostgreSQL
  • MySQL
  • Oracle
  • DB2
  • Sybase
  • Ingres
  • Microsoft SQL Server
  • SQLite (3.7.2 và sau)
  • Teradata và Aster

Đó không phải là tất cả các DBMS có thể, nhưng nó là nhiều hơn hoặc ít hơn mỗi DBMS SQL lớn. (Tôi sẽ tự nguyện thêm ghi chú về bất cứ DBMS khác mà không - hay không - ý kiến ​​ủng hộ C phong cách.)

Các văn bản chuẩn SQL 2003 bình luận ký hiệu như sau:

<comment> ::= <simple comment> | <bracketed comment> 

<simple comment> ::= 
    <simple comment introducer> [ <comment character> ... ] <newline> 

<simple comment introducer> ::= 
    <minus sign> <minus sign> [ <minus sign> ... ] 

<bracketed comment> ::= 
    <bracketed comment introducer> <bracketed comment contents> 
    <bracketed comment terminator> 

<bracketed comment introducer> ::= <slash> <asterisk> 

<bracketed comment terminator> ::= <asterisk> <slash> 

<bracketed comment contents> ::= [ { <comment character> | <separator> }... ] 

<comment character> ::= <nonquote character> | <quote> 

IBM Informix Dynamic Server (IDS hoặc Informix) hỗ trợ nhận xét kiểu C. Nó cũng hỗ trợ '{ ... }' dưới dạng các nhận xét nhiều dòng có khả năng, ngoại trừ trong các ngữ cảnh có nghĩa là một cái gì đó khác - một thứ khác là LIST hoặc SET hoặc MULTISET. (Bạn có thể thấy rằng DB-Access bị nhầm lẫn bởi các nhận xét kiểu C; đó là một vấn đề riêng biệt.)

+0

Đủ công bằng, không rõ tiêu chuẩn SQL nào đang được thảo luận (và thông tin của tôi đã lỗi thời). Tuy nhiên, tôi vẫn khẳng định rằng ý kiến ​​kiểu C không hoàn toàn là nhà cung cấp bất khả tri. –

+0

Tôi nghĩ rằng điều tốt nhất tôi có thể hy vọng là SQL 1999: (cũng ít nhất tôi có vim ở mọi nơi. – ojblass

+0

Nó phụ thuộc vào các phiên bản bạn đang sử dụng, nhưng tôi nghĩ bạn sẽ thấy rằng các sản phẩm đang đi trước tiêu chuẩn. tìm thấy các bình luận từ năm 2003 cho MySQL có vấn đề (nhỏ) với/* comments * /, nhưng mức độ tiện ích, không phải cấp độ máy chủ. Tôi nghĩ bạn sẽ thấy rằng hầu hết các máy chủ đã hỗ trợ nó từ năm 2000. –

8

Tiêu chuẩn ISO chỉ xác định các nhận xét một dòng bắt đầu bằng hai dấu gạch ngang. Một số nhà cung cấp hỗ trợ nhận xét kiểu C (tức là bắt đầu nhiều dòng với/* và kết thúc bằng * /), nhưng không nên xem xét "nhà cung cấp bất khả tri".

Các vấn đề liên quan