Oracle
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Oracle

Ký tự trống bị bỏ qua trong mệnh đề where

Xem Tài liệu Oracle về nghĩa đen :

và tài liệu về ngữ nghĩa so sánh có đệm trống trạng thái:

Vì phía bên trái của phép so sánh là CHAR(10) và phía bên tay phải là một ký tự văn bản sau đó sử dụng ngữ nghĩa so sánh có đệm trống và 'hello ' = 'hello' là đúng.

Bạn có thể thấy điều này trong ví dụ đơn giản:

SELECT * FROM DUAL WHERE 'hello    ' = 'hello';

Cập nhật :

[TL; DR] Hành vi này đã xuất hiện trong tất cả các phiên bản của Oracle kể từ ít nhất là Oracle 7 (phát hành năm 1992). Tôi đã ngừng tìm kiếm tài liệu về các bản phát hành hơn hai thập kỷ nhưng tôi hy vọng rằng bạn sẽ thấy rằng đây là hành vi trong hầu hết (tất cả?) Phiên bản.

Đây là tài liệu cho các phiên bản khác nhau:



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bất kỳ tác động hiệu suất nào trong Oracle khi sử dụng LIKE 'string' vs ='string'?

  2. vấn đề với Add_month trong oracle, tôi cần tạo chu kỳ thanh toán

  3. Cách sử dụng quảng cáo phân tán để giảm thời gian vá lỗi trong Oracle EBS

  4. ORA-01792:số cột tối đa trong bảng hoặc chế độ xem là 1000 lỗi khi sử dụng WITH trong sql

  5. Mã hóa và giải mã Base64 trong oracle