2009-07-15 32 views
5

Tôi đã tự hỏi tại sao MYSQL sử dụng dấu bằng đơn trong câu lệnh điều kiện thay vì hai dấu bằng điển hình hơn. Có lý do kỹ thuật/lịch sử nào cho điều này không? Cảm ơn.Single Equals in MYSQL

Trả lời

7

Xin chào, tôi đã tự hỏi tại sao MYSQL sử dụng dấu bằng đơn trong câu lệnh điều kiện thay vì hai dấu bằng điển hình hơn. Có lý do kỹ thuật/lịch sử nào cho điều này không? Cảm ơn.

So sánh phổ biến hơn trong SQL so với bài tập.

Đó là lý do tại sao SQL sử dụng cú pháp ngắn hơn để thực hiện nhiều việc phổ biến hơn.

Trong cổ điển SQL, so sánh có thể được phân biệt với phân công của bối cảnh (chuyển nhượng có thể chỉ trong SET khoản của một câu lệnh UPDATE), đó là lý do tại sao một nhà điều hành có thể được sử dụng cho cả hoạt động.

Trong phần mở rộng MySQL 's để SQL, chuyển nhượng cho một biến session được ký hiệu bởi :=

+0

SQL không phát triển từ QUEL của Ingres. QUEL, mặc dù có lẽ trong một số cách thiết kế tốt hơn, được thay thế bởi SQL. – lavinio

+0

@lavinio: chính xác, đã xóa phần đó. – Quassnoi

7

Giống như lịch sử.

Đó là SQL. Nó đã sử dụng một dấu bằng để so sánh từ đầu những năm 70.

+0

Bất kỳ ý tưởng nào về nguồn? – Anon

+0

Nó được phát triển bởi IBM vào những năm 70. Nó ban đầu được đặt tên là Ngôn ngữ truy vấn tiếng Anh có cấu trúc, vì vậy nó được thiết kế gần với ngôn ngữ con người bình thường. – Guffa

5

Không bao giờ có một trường hợp cho sự mơ hồ trong SQL.

Trong bản gốc Hướng dẫn tiêu chuẩn SQL bởi C.J.Date (1987 edition), = chuyển nhượng chỉ được sử dụng trong SET khoản của UPDATE. Ở mọi nơi khác = được sử dụng nó được sử dụng để so sánh.

Nhưng trong các ngôn ngữ khác, chẳng hạn như C/C++/C#/Java, = có thể được sử dụng làm bài tập nhưng nó cũng trả về một giá trị. Vì vậy, a = b có nghĩa là "đặt a bằng b và trả về a" trong khi a == b có nghĩa là "trả lại true nếu ab bằng nhau". (Điều này dẫn đến một lỗi rất phổ biến trong các chương trình C, vì if (a = b)if (a == b) đều hợp lệ, vì kết quả không phải là một bool.)

Một số ngôn ngữ như Javascript/ECMAScript cũng giới thiệu === như một loại thứ ba so sánh. Trong các ngôn ngữ đó, == có nghĩa là "chuyển đổi thành cùng một loại và so sánh" trong khi === có nghĩa là "trả lại true chỉ khi chúng cùng loại và cùng một giá trị."