12.4.2 & nbsp; các chức năng và toán tử so sánh
Bảng & NBSP; 12.4 & NBSP; Các toán tử so sánh
2 | Lớn hơn nhà điều hành |
3 | Toán tử lớn hơn hoặc bằng nhau |
4 | Ít hơn nhà điều hành |
5, 6 | Không phải là toán tử bằng nhau |
7 | Ít hơn hoặc người vận hành bằng nhau |
8 | Null-safe bằng người vận hành |
9 | Toán tử bình đẳng |
0 | Liệu một giá trị có nằm trong một phạm vi của các giá trị |
1 | Trả lại đối số không null đầu tiên |
2 | Trả lại đối số lớn nhất |
3 | Liệu một giá trị có nằm trong một tập hợp các giá trị |
4 | Trả về chỉ mục của đối số nhỏ hơn đối số đầu tiên |
5 | Kiểm tra giá trị chống lại Boolean |
6 | Kiểm tra giá trị chống lại Boolean |
6 | 7 |
Không kiểm tra giá trị null | 8 |
Kiểm tra giá trị null | 9 |
Kiểm tra xem đối số có phải là null không | 0 |
Trả lại đối số nhỏ nhất | 1 |
Phù hợp với mô hình đơn giản | 2 |
Liệu một giá trị không nằm trong một phạm vi của các giá trị | 3 |
Liệu một giá trị không nằm trong một tập hợp các giá trị | 4 |
Sự phủ định của kết hợp mô hình đơn giản | 5 |
So sánh hai chuỗi
Các hoạt động so sánh dẫn đến giá trị
mysql> SELECT '.01' '0.01';
-> 1
mysql> SELECT .01 '0.01';
-> 0
mysql> SELECT 'zapp' 'zappp';
-> 1
6 [mysql> SELECT '.01' '0.01';
-> 1
mysql> SELECT .01 '0.01';
-> 0
mysql> SELECT 'zapp' 'zappp';
-> 1
7], mysql> SELECT '.01' '0.01';
-> 1
mysql> SELECT .01 '0.01';
-> 0
mysql> SELECT 'zapp' 'zappp';
-> 1
8 [mysql> SELECT '.01' '0.01';
-> 1
mysql> SELECT .01 '0.01';
-> 0
mysql> SELECT 'zapp' 'zappp';
-> 1
9] hoặc [a x] OR [b y]
0. Các hoạt động này hoạt động cho cả số và chuỗi. Chuỗi được tự động chuyển đổi thành số và số thành chuỗi khi cần thiết.= > < >= SELECT '.01' '0.01';
-> 1
mysql> SELECT .01 '0.01';
-> 0
mysql> SELECT 'zapp' 'zappp';
-> 1
6 [mysql> SELECT '.01' '0.01';
-> 1
mysql> SELECT .01 '0.01';
-> 0
mysql> SELECT 'zapp' 'zappp';
-> 1
7], mysql> SELECT '.01' '0.01';
-> 1
mysql> SELECT .01 '0.01';
-> 0
mysql> SELECT 'zapp' 'zappp';
-> 1
8 [mysql> SELECT '.01' '0.01';
-> 1
mysql> SELECT .01 '0.01';
-> 0
mysql> SELECT 'zapp' 'zappp';
-> 1
9] hoặc [a x] OR [b y]
0. mysql> SELECT '.01' '0.01';
-> 1
mysql> SELECT .01 '0.01';
-> 0
mysql> SELECT 'zapp' 'zappp';
-> 1
0 và [a x] AND [b y]
2 là những ví dụ về các chức năng như vậy; Phần & NBSP; 12.3, Chuyển đổi loại trong đánh giá biểu thức, mô tả các quy tắc để các hoạt động so sánh được thực hiện bởi các chức năng này và các chức năng tương tự để xác định giá trị trả về của chúng.Ghi chú
Trong các phiên bản trước của MySQL, khi đánh giá một biểu thức chứa
mysql> SELECT '.01' '0.01';
-> 1
mysql> SELECT .01 '0.01';
-> 0
mysql> SELECT 'zapp' 'zappp';
-> 1
0 hoặc [a x] AND [b y]
2, máy chủ đã cố gắng đoán bối cảnh mà hàm được sử dụng và để buộc các đối số của hàm vào loại dữ liệu của biểu thức nói chung. Ví dụ, các đối số cho mysql> SELECT 0.1 1
0 được đánh giá và sắp xếp dưới dạng chuỗi, để biểu thức này trả về mysql> SELECT 0.1 1
1. Trong MySQL 8.0.3 và sớm hơn, khi đánh giá biểu thức mysql> SELECT 0.1 1
2, máy chủ đã chuyển đổi các đối số thành số nguyên [dự đoán việc bổ sung số nguyên 0 thành kết quả] trước khi sắp xếp chúng, do đó trả về 2.Bắt đầu với MySQL 8.0.4, máy chủ không còn cố gắng suy ra bối cảnh theo kiểu này. Thay vào đó, hàm được thực thi bằng cách sử dụng các đối số như được cung cấp, thực hiện chuyển đổi kiểu dữ liệu sang một hoặc nhiều đối số nếu và chỉ khi chúng không phải là cùng một loại. Bất kỳ loại ép buộc nào được bắt buộc bởi một biểu thức sử dụng giá trị trả về hiện được thực hiện sau khi thực thi chức năng. Điều này có nghĩa là, trong MySQL 8.0.4 trở lên,
mysql> SELECT 0.1 1
3 đánh giá thành mysql> SELECT 0.1 1
4 và do đó là số nguyên 11. [BUG #83895, BUG #25123839]Để chuyển đổi giá trị thành một loại cụ thể cho mục đích so sánh, bạn có thể sử dụng hàm
mysql> SELECT 0.1 1
5. Các giá trị chuỗi có thể được chuyển đổi thành một bộ ký tự khác bằng mysql> SELECT 0.1 1
6. Xem Phần & NBSP; 12.11, Chức năng Cast Cast và toán tử.Theo mặc định, các so sánh chuỗi không nhạy cảm trường hợp và sử dụng bộ ký tự hiện tại. Mặc định là
7.mysql> SELECT 0.1 1
9mysql> SELECT 1 1, NULL NULL, 1 NULL; -> 1, 1, 0 mysql> SELECT 1 = 1, NULL = NULL, 1 = NULL; -> 1, NULL, NULL
mysql> SELECT 1 = 0; -> 0 mysql> SELECT '0' = 0; -> 1 mysql> SELECT '0.0' = 0; -> 1 mysql> SELECT '0.01' = 0; -> 0 mysql> SELECT '.01' = 0.01; -> 1
Bình đẳng:
[a = x] AND [b = y]
Để so sánh hàng,
9 tương đương với:mysql> SELECT 0.1 1
8mysql> SELECT 1 1, NULL NULL, 1 NULL; -> 1, 1, 0 mysql> SELECT 1 = 1, NULL = NULL, 1 = NULL; -> 1, NULL, NULL
________ 60 an toàn bằng nhau. Toán tử này thực hiện so sánh bình đẳng như toán tử
9, nhưng trả vềmysql> SELECT 1 1, NULL NULL, 1 NULL; -> 1, 1, 0 mysql> SELECT 1 = 1, NULL = NULL, 1 = NULL; -> 1, NULL, NULL
6 thay vìmysql> SELECT '.01' '0.01'; -> 1 mysql> SELECT .01 '0.01'; -> 0 mysql> SELECT 'zapp' 'zappp'; -> 1
0 nếu cả hai toán hạng là[a x] OR [b y]
0 và[a x] OR [b y]
8 thay vìmysql> SELECT '.01' '0.01'; -> 1 mysql> SELECT .01 '0.01'; -> 0 mysql> SELECT 'zapp' 'zappp'; -> 1
0 nếu một toán hạng là[a x] OR [b y]
0.[a x] OR [b y]
mysql> SELECT 1 1, NULL NULL, 1 NULL; -> 1, 1, 0 mysql> SELECT 1 = 1, NULL = NULL, 1 = NULL; -> 1, NULL, NULL
Toán tử
8 tương đương với toán tử SQLmysql> SELECT 1 1, NULL NULL, 1 NULL; -> 1, 1, 0 mysql> SELECT 1 = 1, NULL = NULL, 1 = NULL; -> 1, NULL, NULL
0 tiêu chuẩn.mysql> SELECT 2 < 2; -> 0
[a x] AND [b y]
Để so sánh hàng,
1 tương đương với:mysql> SELECT 2 < 2; -> 0
5,mysql> SELECT 1 1, NULL NULL, 1 NULL; -> 1, 1, 0 mysql> SELECT 1 = 1, NULL = NULL, 1 = NULL; -> 1, NULL, NULL
6mysql> SELECT 1 1, NULL NULL, 1 NULL; -> 1, 1, 0 mysql> SELECT 1 = 1, NULL = NULL, 1 = NULL; -> 1, NULL, NULL
mysql> SELECT '.01' '0.01'; -> 1 mysql> SELECT .01 '0.01'; -> 0 mysql> SELECT 'zapp' 'zappp'; -> 1
Không công bằng:
[a x] OR [b y]
Để so sánh hàng,
4 vàmysql> SELECT 2 < 2; -> 0
5 tương đương với:mysql> SELECT 2 < 2; -> 0
7mysql> SELECT 1 1, NULL NULL, 1 NULL; -> 1, 1, 0 mysql> SELECT 1 = 1, NULL = NULL, 1 = NULL; -> 1, NULL, NULL
mysql> SELECT 0.1 1
Nhỏ hơn hoặc bằng:
7 tương đương với:[a < x] OR [[a = x] AND [b SELECT 2 < 2; -> 0
4mysql> SELECT 1 1, NULL NULL, 1 NULL; -> 1, 1, 0 mysql> SELECT 1 = 1, NULL = NULL, 1 = NULL; -> 1, NULL, NULL
mysql> SELECT 2 < 2; -> 0
Ít hơn:
0mysql> SELECT 1 = 0; -> 0 mysql> SELECT '0' = 0; -> 1 mysql> SELECT '0.0' = 0; -> 1 mysql> SELECT '0.01' = 0; -> 0 mysql> SELECT '.01' = 0.01; -> 1
Để so sánh hàng,
9 tương đương với:mysql> SELECT 2 < 2; -> 0
3mysql> SELECT 1 1, NULL NULL, 1 NULL; -> 1, 1, 0 mysql> SELECT 1 = 1, NULL = NULL, 1 = NULL; -> 1, NULL, NULL
1mysql> SELECT 1 = 0; -> 0 mysql> SELECT '0' = 0; -> 1 mysql> SELECT '0.0' = 0; -> 1 mysql> SELECT '0.01' = 0; -> 0 mysql> SELECT '.01' = 0.01; -> 1
Lớn hơn hoặc bằng:
2mysql> SELECT 1 = 0; -> 0 mysql> SELECT '0' = 0; -> 1 mysql> SELECT '0.0' = 0; -> 1 mysql> SELECT '0.01' = 0; -> 0 mysql> SELECT '.01' = 0.01; -> 1
Để so sánh hàng,
01 tương đương với:mysql> SELECT 1 = 0; -> 0 mysql> SELECT '0' = 0; -> 1 mysql> SELECT '0.0' = 0; -> 1 mysql> SELECT '0.01' = 0; -> 0 mysql> SELECT '.01' = 0.01; -> 1
2mysql> SELECT 1 1, NULL NULL, 1 NULL; -> 1, 1, 0 mysql> SELECT 1 = 1, NULL = NULL, 1 = NULL; -> 1, NULL, NULL
3mysql> SELECT 1 = 0; -> 0 mysql> SELECT '0' = 0; -> 1 mysql> SELECT '0.0' = 0; -> 1 mysql> SELECT '0.01' = 0; -> 0 mysql> SELECT '.01' = 0.01; -> 1
Để so sánh hàng,
03 tương đương với:mysql> SELECT 1 = 0; -> 0 mysql> SELECT '0' = 0; -> 1 mysql> SELECT '0.0' = 0; -> 1 mysql> SELECT '0.01' = 0; -> 0 mysql> SELECT '.01' = 0.01; -> 1
4mysql> SELECT 1 = 0; -> 0 mysql> SELECT '0' = 0; -> 1 mysql> SELECT '0.0' = 0; -> 1 mysql> SELECT '0.01' = 0; -> 0 mysql> SELECT '.01' = 0.01; -> 1
04 giữamysql> SELECT 1 = 0; -> 0 mysql> SELECT '0' = 0; -> 1 mysql> SELECT '0.0' = 0; -> 1 mysql> SELECT '0.01' = 0; -> 0 mysql> SELECT '.01' = 0.01; -> 1
05 vàmysql> SELECT 1 = 0; -> 0 mysql> SELECT '0' = 0; -> 1 mysql> SELECT '0.0' = 0; -> 1 mysql> SELECT '0.01' = 0; -> 0 mysql> SELECT '.01' = 0.01; -> 1
06mysql> SELECT 1 = 0; -> 0 mysql> SELECT '0' = 0; -> 1 mysql> SELECT '0.0' = 0; -> 1 mysql> SELECT '0.01' = 0; -> 0 mysql> SELECT '.01' = 0.01; -> 1
Nếu
07 lớn hơn hoặc bằngmysql> SELECT 1 = 0; -> 0 mysql> SELECT '0' = 0; -> 1 mysql> SELECT '0.0' = 0; -> 1 mysql> SELECT '0.01' = 0; -> 0 mysql> SELECT '.01' = 0.01; -> 1
05 vàmysql> SELECT 1 = 0; -> 0 mysql> SELECT '0' = 0; -> 1 mysql> SELECT '0.0' = 0; -> 1 mysql> SELECT '0.01' = 0; -> 0 mysql> SELECT '.01' = 0.01; -> 1
07 nhỏ hơn hoặc bằngmysql> SELECT 1 = 0; -> 0 mysql> SELECT '0' = 0; -> 1 mysql> SELECT '0.0' = 0; -> 1 mysql> SELECT '0.01' = 0; -> 0 mysql> SELECT '.01' = 0.01; -> 1
06,mysql> SELECT 1 = 0; -> 0 mysql> SELECT '0' = 0; -> 1 mysql> SELECT '0.0' = 0; -> 1 mysql> SELECT '0.01' = 0; -> 0 mysql> SELECT '.01' = 0.01; -> 1
11 trả vềmysql> SELECT 1 = 0; -> 0 mysql> SELECT '0' = 0; -> 1 mysql> SELECT '0.0' = 0; -> 1 mysql> SELECT '0.01' = 0; -> 0 mysql> SELECT '.01' = 0.01; -> 1
6, nếu không thì nó sẽ trả vềmysql> SELECT '.01' '0.01'; -> 1 mysql> SELECT .01 '0.01'; -> 0 mysql> SELECT 'zapp' 'zappp'; -> 1
8. Điều này tương đương với biểu thức [mysql> SELECT '.01' '0.01'; -> 1 mysql> SELECT .01 '0.01'; -> 0 mysql> SELECT 'zapp' 'zappp'; -> 1
05mysql> SELECT 1 = 0; -> 0 mysql> SELECT '0' = 0; -> 1 mysql> SELECT '0.0' = 0; -> 1 mysql> SELECT '0.01' = 0; -> 0 mysql> SELECT '.01' = 0.01; -> 1
[
07 AND
05 SELECT 1 = 0; -> 0 mysql> SELECT '0' = 0; -> 1 mysql> SELECT '0.0' = 0; -> 1 mysql> SELECT '0.01' = 0; -> 0 mysql> SELECT '.01' = 0.01; -> 1mysql> SELECT 1 = 0; -> 0 mysql> SELECT '0' = 0; -> 1 mysql> SELECT '0.0' = 0; -> 1 mysql> SELECT '0.01' = 0; -> 0 mysql> SELECT '.01' = 0.01; -> 1
07 SELECT 1 = 0; -> 0 mysql> SELECT '0' = 0; -> 1 mysql> SELECT '0.0' = 0; -> 1 mysql> SELECT '0.01' = 0; -> 0 mysql> SELECT '.01' = 0.01; -> 106] if all the arguments are of the same type. Otherwise type conversion takes place according to the rules described in Section 12.3, “Type Conversion in Expression Evaluation”, but applied to all the three arguments.mysql> SELECT 1 = 0; -> 0 mysql> SELECT '0' = 0; -> 1 mysql> SELECT '0.0' = 0; -> 1 mysql> SELECT '0.01' = 0; -> 0 mysql> SELECT '.01' = 0.01; -> 1
5mysql> SELECT 1 = 0; -> 0 mysql> SELECT '0' = 0; -> 1 mysql> SELECT '0.0' = 0; -> 1 mysql> SELECT '0.01' = 0; -> 0 mysql> SELECT '.01' = 0.01; -> 1
Để có kết quả tốt nhất khi sử dụng
11 với các giá trị ngày hoặc thời gian, hãy sử dụngmysql> SELECT 1 = 0; -> 0 mysql> SELECT '0' = 0; -> 1 mysql> SELECT '0.0' = 0; -> 1 mysql> SELECT '0.01' = 0; -> 0 mysql> SELECT '.01' = 0.01; -> 1
5 để chuyển đổi rõ ràng các giá trị thành kiểu dữ liệu mong muốn. Ví dụ: Nếu bạn so sánhmysql> SELECT 0.1 1
20 với hai giá trịmysql> SELECT 1 = 0; -> 0 mysql> SELECT '0' = 0; -> 1 mysql> SELECT '0.0' = 0; -> 1 mysql> SELECT '0.01' = 0; -> 0 mysql> SELECT '.01' = 0.01; -> 1
21, hãy chuyển đổi các giá trịmysql> SELECT 1 = 0; -> 0 mysql> SELECT '0' = 0; -> 1 mysql> SELECT '0.0' = 0; -> 1 mysql> SELECT '0.01' = 0; -> 0 mysql> SELECT '.01' = 0.01; -> 1
21 thành các giá trịmysql> SELECT 1 = 0; -> 0 mysql> SELECT '0' = 0; -> 1 mysql> SELECT '0.0' = 0; -> 1 mysql> SELECT '0.01' = 0; -> 0 mysql> SELECT '.01' = 0.01; -> 1
20. Nếu bạn sử dụng một hằng số chuỗi nhưmysql> SELECT 1 = 0; -> 0 mysql> SELECT '0' = 0; -> 1 mysql> SELECT '0.0' = 0; -> 1 mysql> SELECT '0.01' = 0; -> 0 mysql> SELECT '.01' = 0.01; -> 1
24 so sánh vớimysql> SELECT 1 = 0; -> 0 mysql> SELECT '0' = 0; -> 1 mysql> SELECT '0.0' = 0; -> 1 mysql> SELECT '0.01' = 0; -> 0 mysql> SELECT '.01' = 0.01; -> 1
21, hãy chuyển chuỗi thành Amysql> SELECT 1 = 0; -> 0 mysql> SELECT '0' = 0; -> 1 mysql> SELECT '0.0' = 0; -> 1 mysql> SELECT '0.01' = 0; -> 0 mysql> SELECT '.01' = 0.01; -> 1
21.mysql> SELECT 1 = 0; -> 0 mysql> SELECT '0' = 0; -> 1 mysql> SELECT '0.0' = 0; -> 1 mysql> SELECT '0.01' = 0; -> 0 mysql> SELECT '.01' = 0.01; -> 1
04 Không phải giữamysql> SELECT 1 = 0; -> 0 mysql> SELECT '0' = 0; -> 1 mysql> SELECT '0.0' = 0; -> 1 mysql> SELECT '0.01' = 0; -> 0 mysql> SELECT '.01' = 0.01; -> 1
05 vàmysql> SELECT 1 = 0; -> 0 mysql> SELECT '0' = 0; -> 1 mysql> SELECT '0.0' = 0; -> 1 mysql> SELECT '0.01' = 0; -> 0 mysql> SELECT '.01' = 0.01; -> 1
06mysql> SELECT 1 = 0; -> 0 mysql> SELECT '0' = 0; -> 1 mysql> SELECT '0.0' = 0; -> 1 mysql> SELECT '0.01' = 0; -> 0 mysql> SELECT '.01' = 0.01; -> 1
Điều này giống như không [
07 giữamysql> SELECT 1 = 0; -> 0 mysql> SELECT '0' = 0; -> 1 mysql> SELECT '0.0' = 0; -> 1 mysql> SELECT '0.01' = 0; -> 0 mysql> SELECT '.01' = 0.01; -> 1
05 vàmysql> SELECT 1 = 0; -> 0 mysql> SELECT '0' = 0; -> 1 mysql> SELECT '0.0' = 0; -> 1 mysql> SELECT '0.01' = 0; -> 0 mysql> SELECT '.01' = 0.01; -> 1
06].mysql> SELECT 1 = 0; -> 0 mysql> SELECT '0' = 0; -> 1 mysql> SELECT '0.0' = 0; -> 1 mysql> SELECT '0.01' = 0; -> 0 mysql> SELECT '.01' = 0.01; -> 1
NOT [
.
07 BETWEENmysql> SELECT 1 = 0; -> 0 mysql> SELECT '0' = 0; -> 1 mysql> SELECT '0.0' = 0; -> 1 mysql> SELECT '0.01' = 0; -> 0 mysql> SELECT '.01' = 0.01; -> 1
05 ANDmysql> SELECT 1 = 0; -> 0 mysql> SELECT '0' = 0; -> 1 mysql> SELECT '0.0' = 0; -> 1 mysql> SELECT '0.01' = 0; -> 0 mysql> SELECT '.01' = 0.01; -> 1
06]mysql> SELECT 1 = 0; -> 0 mysql> SELECT '0' = 0; -> 1 mysql> SELECT '0.0' = 0; -> 1 mysql> SELECT '0.01' = 0; -> 0 mysql> SELECT '.01' = 0.01; -> 1
________ 133, ...]
Trả về giá trị không phải là đầu tiên trong danh sách hoặc
0 nếu không có giá trị không phải là không.[a x] OR [b y]
Loại trả về của
1 là loại tổng hợp của các loại đối số.[a x] AND [b y]
6mysql> SELECT 1 = 0; -> 0 mysql> SELECT '0' = 0; -> 1 mysql> SELECT '0.0' = 0; -> 1 mysql> SELECT '0.01' = 0; -> 0 mysql> SELECT '.01' = 0.01; -> 1
________ 138, ________ 139, ...]
Với hai hoặc nhiều đối số, trả về đối số lớn nhất [có giá trị tối đa]. Các đối số được so sánh bằng cách sử dụng các quy tắc tương tự như đối với
0.mysql> SELECT '.01' '0.01'; -> 1 mysql> SELECT .01 '0.01'; -> 0 mysql> SELECT 'zapp' 'zappp'; -> 1
7mysql> SELECT 1 = 0; -> 0 mysql> SELECT '0' = 0; -> 1 mysql> SELECT '0.0' = 0; -> 1 mysql> SELECT '0.01' = 0; -> 0 mysql> SELECT '.01' = 0.01; -> 1
2 Trả về[a x] AND [b y]
0 Nếu bất kỳ đối số nào là[a x] OR [b y]
0.[a x] OR [b y]
04 in [____ 145, ...]mysql> SELECT 1 = 0; -> 0 mysql> SELECT '0' = 0; -> 1 mysql> SELECT '0.0' = 0; -> 1 mysql> SELECT '0.01' = 0; -> 0 mysql> SELECT '.01' = 0.01; -> 1
Trả về
6 [Đúng] nếumysql> SELECT '.01' '0.01'; -> 1 mysql> SELECT .01 '0.01'; -> 0 mysql> SELECT 'zapp' 'zappp'; -> 1
07 bằng với bất kỳ giá trị nào trong danh sáchmysql> SELECT 1 = 0; -> 0 mysql> SELECT '0' = 0; -> 1 mysql> SELECT '0.0' = 0; -> 1 mysql> SELECT '0.01' = 0; -> 0 mysql> SELECT '.01' = 0.01; -> 1
3, thì khác sẽ trả về[a x] AND [b y]
8 [sai].mysql> SELECT '.01' '0.01'; -> 1 mysql> SELECT .01 '0.01'; -> 0 mysql> SELECT 'zapp' 'zappp'; -> 1
Chuyển đổi loại diễn ra theo các quy tắc được mô tả trong Phần & NBSP; 12.3, Chuyển đổi loại trong đánh giá biểu thức, được áp dụng cho tất cả các đối số. Nếu không cần chuyển đổi loại cho các giá trị trong danh sách
3, tất cả đều không phải là hằng số của cùng một loại và[a x] AND [b y]
07 có thể được so sánh với từng hằng số chúng là giá trị của cùng loại [có thể sau khi chuyển đổi loại], một Tối ưu hóa diễn ra. Các giá trị mà danh sách được sắp xếp và việc tìm kiếmmysql> SELECT 1 = 0; -> 0 mysql> SELECT '0' = 0; -> 1 mysql> SELECT '0.0' = 0; -> 1 mysql> SELECT '0.01' = 0; -> 0 mysql> SELECT '.01' = 0.01; -> 1
07 được thực hiện bằng cách sử dụng tìm kiếm nhị phân, điều này làm cho hoạt độngmysql> SELECT 1 = 0; -> 0 mysql> SELECT '0' = 0; -> 1 mysql> SELECT '0.0' = 0; -> 1 mysql> SELECT '0.01' = 0; -> 0 mysql> SELECT '.01' = 0.01; -> 1
3 rất nhanh chóng.[a x] AND [b y]
8mysql> SELECT 1 = 0; -> 0 mysql> SELECT '0' = 0; -> 1 mysql> SELECT '0.0' = 0; -> 1 mysql> SELECT '0.01' = 0; -> 0 mysql> SELECT '.01' = 0.01; -> 1
3 có thể được sử dụng để so sánh các hàm tạo hàng:[a x] AND [b y]
9mysql> SELECT 1 = 0; -> 0 mysql> SELECT '0' = 0; -> 1 mysql> SELECT '0.0' = 0; -> 1 mysql> SELECT '0.01' = 0; -> 0 mysql> SELECT '.01' = 0.01; -> 1
Bạn không bao giờ nên trộn các giá trị được trích dẫn và chưa được trích dẫn trong danh sách
3 vì các quy tắc so sánh cho các giá trị được trích dẫn [như chuỗi] và các giá trị chưa được trình cấp [như số] khác nhau. Do đó, các loại trộn có thể dẫn đến kết quả không nhất quán. Ví dụ: không viết biểu thức[a x] AND [b y]
3 như thế này:[a x] AND [b y]
0[a = x] AND [b = y]
Thay vào đó, hãy viết nó như thế này:
1[a = x] AND [b = y]
Chuyển đổi loại ẩn có thể tạo ra kết quả không trực quan:
2[a = x] AND [b = y]
Trong cả hai trường hợp, các giá trị so sánh được chuyển đổi thành các giá trị dấu phẩy động, mang lại 0,0 trong mỗi trường hợp và kết quả so sánh là 1 [true].
Số lượng giá trị trong danh sách
3 chỉ bị giới hạn bởi giá trị[a x] AND [b y]
59.mysql> SELECT 1 = 0; -> 0 mysql> SELECT '0' = 0; -> 1 mysql> SELECT '0.0' = 0; -> 1 mysql> SELECT '0.01' = 0; -> 0 mysql> SELECT '.01' = 0.01; -> 1
Để tuân thủ tiêu chuẩn SQL,
3 trả về[a x] AND [b y]
0 không chỉ nếu biểu thức ở phía bên trái là[a x] OR [b y]
0, mà còn nếu không tìm thấy trận đấu nào trong danh sách và một trong các biểu thức trong danh sách là[a x] OR [b y]
0.[a x] OR [b y]
3 Cú pháp cũng có thể được sử dụng để viết một số loại truy vấn con. Xem phần & nbsp; 13.2.11.3, các nhóm phụ với bất kỳ, trong hoặc một số.[a x] AND [b y]
04 Không ở [____ 145, ...]mysql> SELECT 1 = 0; -> 0 mysql> SELECT '0' = 0; -> 1 mysql> SELECT '0.0' = 0; -> 1 mysql> SELECT '0.01' = 0; -> 0 mysql> SELECT '.01' = 0.01; -> 1
Điều này giống như không [
07 trong [____ 145, ...]].mysql> SELECT 1 = 0; -> 0 mysql> SELECT '0' = 0; -> 1 mysql> SELECT '0.0' = 0; -> 1 mysql> SELECT '0.01' = 0; -> 0 mysql> SELECT '.01' = 0.01; -> 1
NOT [
.
07 IN [mysql> SELECT 1 = 0; -> 0 mysql> SELECT '0' = 0; -> 1 mysql> SELECT '0.0' = 0; -> 1 mysql> SELECT '0.01' = 0; -> 0 mysql> SELECT '.01' = 0.01; -> 1
45,...]]mysql> SELECT 1 = 0; -> 0 mysql> SELECT '0' = 0; -> 1 mysql> SELECT '0.0' = 0; -> 1 mysql> SELECT '0.01' = 0; -> 0 mysql> SELECT '.01' = 0.01; -> 1
________ 169, ________ 170, ________ 171, ________ 172, ...]
Trả về
8 nếumysql> SELECT '.01' '0.01'; -> 1 mysql> SELECT .01 '0.01'; -> 0 mysql> SELECT 'zapp' 'zappp'; -> 1
74 SELECT 1 = 0; -> 0 mysql> SELECT '0' = 0; -> 1 mysql> SELECT '0.0' = 0; -> 1 mysql> SELECT '0.01' = 0; -> 0 mysql> SELECT '.01' = 0.01; -> 170,mysql> SELECT 1 = 0; -> 0 mysql> SELECT '0' = 0; -> 1 mysql> SELECT '0.0' = 0; -> 1 mysql> SELECT '0.01' = 0; -> 0 mysql> SELECT '.01' = 0.01; -> 1
6 nếumysql> SELECT '.01' '0.01'; -> 1 mysql> SELECT .01 '0.01'; -> 0 mysql> SELECT 'zapp' 'zappp'; -> 1
74 SELECT 1 = 0; -> 0 mysql> SELECT '0' = 0; -> 1 mysql> SELECT '0.0' = 0; -> 1 mysql> SELECT '0.01' = 0; -> 0 mysql> SELECT '.01' = 0.01; -> 171 và v.v. Tất cả các lập luận được coi là số nguyên. Yêu cầumysql> SELECT 1 = 0; -> 0 mysql> SELECT '0' = 0; -> 1 mysql> SELECT '0.0' = 0; -> 1 mysql> SELECT '0.01' = 0; -> 0 mysql> SELECT '.01' = 0.01; -> 1
70 SELECT 1 = 0; -> 0 mysql> SELECT '0' = 0; -> 1 mysql> SELECT '0.0' = 0; -> 1 mysql> SELECT '0.01' = 0; -> 0 mysql> SELECT '.01' = 0.01; -> 171 SELECT 1 = 0; -> 0 mysql> SELECT '0' = 0; -> 1 mysql> SELECT '0.0' = 0; -> 1 mysql> SELECT '0.01' = 0; -> 0 mysql> SELECT '.01' = 0.01; -> 172 SELECT 1 = 0; -> 0 mysql> SELECT '0' = 0; -> 1 mysql> SELECT '0.0' = 0; -> 1 mysql> SELECT '0.01' = 0; -> 0 mysql> SELECT '.01' = 0.01; -> 185 SELECT 1 = 0; -> 0 mysql> SELECT '0' = 0; -> 1 mysql> SELECT '0.0' = 0; -> 1 mysql> SELECT '0.01' = 0; -> 0 mysql> SELECT '.01' = 0.01; -> 186 Để chức năng này hoạt động chính xác. Điều này là do tìm kiếm nhị phân được sử dụng [rất nhanh].mysql> SELECT 1 = 0; -> 0 mysql> SELECT '0' = 0; -> 1 mysql> SELECT '0.0' = 0; -> 1 mysql> SELECT '0.01' = 0; -> 0 mysql> SELECT '.01' = 0.01; -> 1
3[a = x] AND [b = y]
87mysql> SELECT 1 = 0; -> 0 mysql> SELECT '0' = 0; -> 1 mysql> SELECT '0.0' = 0; -> 1 mysql> SELECT '0.01' = 0; -> 0 mysql> SELECT '.01' = 0.01; -> 1
Kiểm tra giá trị theo giá trị boolean, trong đó
88 có thể làmysql> SELECT 1 = 0; -> 0 mysql> SELECT '0' = 0; -> 1 mysql> SELECT '0.0' = 0; -> 1 mysql> SELECT '0.01' = 0; -> 0 mysql> SELECT '.01' = 0.01; -> 1
7,mysql> SELECT '.01' '0.01'; -> 1 mysql> SELECT .01 '0.01'; -> 0 mysql> SELECT 'zapp' 'zappp'; -> 1
9 hoặcmysql> SELECT '.01' '0.01'; -> 1 mysql> SELECT .01 '0.01'; -> 0 mysql> SELECT 'zapp' 'zappp'; -> 1
91.mysql> SELECT 1 = 0; -> 0 mysql> SELECT '0' = 0; -> 1 mysql> SELECT '0.0' = 0; -> 1 mysql> SELECT '0.01' = 0; -> 0 mysql> SELECT '.01' = 0.01; -> 1
4[a = x] AND [b = y]
Không phải là
88mysql> SELECT 1 = 0; -> 0 mysql> SELECT '0' = 0; -> 1 mysql> SELECT '0.0' = 0; -> 1 mysql> SELECT '0.01' = 0; -> 0 mysql> SELECT '.01' = 0.01; -> 1
Kiểm tra giá trị theo giá trị boolean, trong đó
88 có thể làmysql> SELECT 1 = 0; -> 0 mysql> SELECT '0' = 0; -> 1 mysql> SELECT '0.0' = 0; -> 1 mysql> SELECT '0.01' = 0; -> 0 mysql> SELECT '.01' = 0.01; -> 1
7,mysql> SELECT '.01' '0.01'; -> 1 mysql> SELECT .01 '0.01'; -> 0 mysql> SELECT 'zapp' 'zappp'; -> 1
9 hoặcmysql> SELECT '.01' '0.01'; -> 1 mysql> SELECT .01 '0.01'; -> 0 mysql> SELECT 'zapp' 'zappp'; -> 1
91.mysql> SELECT 1 = 0; -> 0 mysql> SELECT '0' = 0; -> 1 mysql> SELECT '0.0' = 0; -> 1 mysql> SELECT '0.01' = 0; -> 0 mysql> SELECT '.01' = 0.01; -> 1
5[a = x] AND [b = y]
Không phải là
88mysql> SELECT 1 = 0; -> 0 mysql> SELECT '0' = 0; -> 1 mysql> SELECT '0.0' = 0; -> 1 mysql> SELECT '0.01' = 0; -> 0 mysql> SELECT '.01' = 0.01; -> 1
8[a x] AND [b y]
6[a = x] AND [b = y]
Kiểm tra xem một giá trị là
0.[a x] OR [b y]
Để hoạt động tốt với các chương trình ODBC, MySQL hỗ trợ các tính năng bổ sung sau khi sử dụng
99:mysql> SELECT 1 = 0; -> 0 mysql> SELECT '0' = 0; -> 1 mysql> SELECT '0.0' = 0; -> 1 mysql> SELECT '0.01' = 0; -> 0 mysql> SELECT '.01' = 0.01; -> 1
7[a = x] AND [b = y]
Nếu biến
00 được đặt thành 1, thì sau khi một câu lệnh chèn thành công giá trị[a = x] AND [b = y]
01 được tạo tự động, bạn có thể tìm thấy giá trị đó bằng cách đưa ra một câu lệnh của biểu mẫu sau:[a = x] AND [b = y]
Hành vi truy xuất giá trị
01 bằng cách sử dụng so sánh[a = x] AND [b = y]
8 có thể bị vô hiệu hóa bằng cách đặt[a x] AND [b y]
07. Xem Phần & NBSP; 5.1.8, Biến hệ thống máy chủ của Cameron.[a = x] AND [b = y]
Giá trị mặc định của
00 là 0.[a = x] AND [b = y]
Đối với các cột
21 vàmysql> SELECT 1 = 0; -> 0 mysql> SELECT '0' = 0; -> 1 mysql> SELECT '0.0' = 0; -> 1 mysql> SELECT '0.01' = 0; -> 0 mysql> SELECT '.01' = 0.01; -> 1
20 được khai báo làmysql> SELECT 1 = 0; -> 0 mysql> SELECT '0' = 0; -> 1 mysql> SELECT '0.0' = 0; -> 1 mysql> SELECT '0.01' = 0; -> 0 mysql> SELECT '.01' = 0.01; -> 1
11, bạn có thể tìm thấy ngày đặc biệt[a = x] AND [b = y]
12 bằng cách sử dụng một câu như thế này:[a = x] AND [b = y]
8[a = x] AND [b = y]
Điều này là cần thiết để có được một số ứng dụng ODBC hoạt động vì ODBC không hỗ trợ giá trị ngày
12.[a = x] AND [b = y]
Xem Nhận các giá trị tự động và mô tả cho tùy chọn
14 tại các tham số kết nối đầu nối/ODBC.[a = x] AND [b = y]
7[a x] AND [b y]
Kiểm tra xem một giá trị không phải là
0.[a x] OR [b y]
9[a = x] AND [b = y]
ISNULL[
07]mysql> SELECT 1 = 0; -> 0 mysql> SELECT '0' = 0; -> 1 mysql> SELECT '0.0' = 0; -> 1 mysql> SELECT '0.01' = 0; -> 0 mysql> SELECT '.01' = 0.01; -> 1
Nếu
07 làmysql> SELECT 1 = 0; -> 0 mysql> SELECT '0' = 0; -> 1 mysql> SELECT '0.0' = 0; -> 1 mysql> SELECT '0.01' = 0; -> 0 mysql> SELECT '.01' = 0.01; -> 1
0,[a x] OR [b y]
9 trả về[a x] AND [b y]
6, nếu không nó sẽ trả vềmysql> SELECT '.01' '0.01'; -> 1 mysql> SELECT .01 '0.01'; -> 0 mysql> SELECT 'zapp' 'zappp'; -> 1
8.mysql> SELECT '.01' '0.01'; -> 1 mysql> SELECT .01 '0.01'; -> 0 mysql> SELECT 'zapp' 'zappp'; -> 1
0mysql> SELECT 1 1, NULL NULL, 1 NULL; -> 1, 1, 0 mysql> SELECT 1 = 1, NULL = NULL, 1 = NULL; -> 1, NULL, NULL
9 có thể được sử dụng thay vì[a x] AND [b y]
9 để kiểm tra xem giá trị có phải làmysql> SELECT 1 1, NULL NULL, 1 NULL; -> 1, 1, 0 mysql> SELECT 1 = 1, NULL = NULL, 1 = NULL; -> 1, NULL, NULL
0 hay không. [So sánh giá trị với[a x] OR [b y]
0 bằng cách sử dụng[a x] OR [b y]
9 luôn mang lạimysql> SELECT 1 1, NULL NULL, 1 NULL; -> 1, 1, 0 mysql> SELECT 1 = 1, NULL = NULL, 1 = NULL; -> 1, NULL, NULL
0.][a x] OR [b y]
Hàm
9 chia sẻ một số hành vi đặc biệt với toán tử so sánh[a x] AND [b y]
8. Xem mô tả của[a x] AND [b y]
8.[a x] AND [b y]
-
________ 232, ________ 139, ...]
Với hai hoặc nhiều đối số, trả về đối số nhỏ nhất [có giá trị tối thiểu]. Các đối số được so sánh bằng cách sử dụng các quy tắc sau:
Nếu bất kỳ đối số là
0, kết quả là[a x] OR [b y]
0. Không cần so sánh.[a x] OR [b y]
Nếu tất cả các đối số được định giá nguyên, chúng được so sánh như số nguyên.
Nếu ít nhất một đối số là độ chính xác gấp đôi, chúng được so sánh là các giá trị chính xác kép. Mặt khác, nếu ít nhất một đối số là giá trị
36, chúng được so sánh là giá trị[a = x] AND [b = y]
36.[a = x] AND [b = y]
Nếu các đối số bao gồm hỗn hợp các số và chuỗi, chúng được so sánh là chuỗi.
Nếu bất kỳ đối số nào là một chuỗi không phải là [ký tự], các đối số được so sánh là các chuỗi không phải là chuỗi.
Trong tất cả các trường hợp khác, các đối số được so sánh là chuỗi nhị phân.
Loại trả về của
0 là loại tổng hợp của các loại đối số so sánh.mysql> SELECT '.01' '0.01'; -> 1 mysql> SELECT .01 '0.01'; -> 0 mysql> SELECT 'zapp' 'zappp'; -> 1
1mysql> SELECT 1 1, NULL NULL, 1 NULL; -> 1, 1, 0 mysql> SELECT 1 = 1, NULL = NULL, 1 = NULL; -> 1, NULL, NULL