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

Cách tốt nhất để so sánh VARCHAR2 với CHAR

Dưới dạng table1.value được lập chỉ mục, bạn không muốn thao tác điều đó để so sánh vì điều đó sẽ ngăn chỉ mục được sử dụng. Vì vậy, bạn sẽ cần sửa đổi giá trị mà bạn đang tìm kiếm:

SELECT table1.ID FROM table1 WHERE table1.VALUE = RPAD('123-45', 12)

Oracle sẽ thực hiện điều đó một cách ngầm định với truy vấn mà bạn đã hiển thị và sẽ vẫn sử dụng chỉ mục. Và điều tương tự nếu bạn đang tham gia các bảng, nhưng việc bạn đệm hoặc cắt trong quá trình tham gia phụ thuộc vào bảng nào là trình điều khiển:

SELECT table1.ID, table2.ID
FROM table1
JOIN table2 ON table2.value = RTRIM(table1.value)
WHERE table1.VALUE = RPAD('123-45', 12)

Hoặc:

SELECT table1.ID
FROM table2
JOIN table1 ON table1.value = RPAD(table2.value, 12)



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Sự khác biệt giữa mảng lồng nhau và mảng kết hợp là gì?

  2. Tính toán dấu thời gian với thời gian tiết kiệm ánh sáng ban ngày

  3. Làm cách nào để biết khi nào một thủ tục đã lưu trữ được sửa đổi hoặc biên dịch lần cuối trong Oracle?

  4. Lỗi kiểu dữ liệu Oracle

  5. Đã tìm thấy một biểu tượng sơ đồ quan hệ không xác định trong Oracle SQL Developer