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

SQLAlchemy truy vấn tìm kiếm dựa trên IN không phân biệt chữ hoa chữ thường?

Điều này sẽ biên dịch chính xác ...

query( models.Object )\
.filter( 
     sqlalchemy.func.upper( models.Object.fieldname )\
     .in_( (sqlalchemy.func.upper(foo) , sqlalchemy.func.upper(bar), ) )
)\
.all()
  1. bạn cũng có thể chuyển bằng văn bản viết hoa. cá nhân tôi sẽ làm in_( foo.uppercase() , bar.uppercase() )

  2. SqlAlchemy làm việc với DBAPI để chuyển các tham số liên kết vào kho dữ liệu phụ trợ của bạn. Bản dịch - các giá trị được thoát tự động.

nếu bạn muốn thực hiện một danh sách các chuỗi, một cái gì đó như thế này sẽ hoạt động

.in_( [ i.upper() for i in inputs ] )
.in_( [ sqlalchemy.func.upper(i) for i in inputs ] )

Chỉ muốn thêm rằng nếu bạn muốn tối ưu hóa các lựa chọn này về tốc độ và trên Postgres hoặc Oracle, bạn có thể tạo 'chỉ mục chức năng'

CREATE INDEX table_fieldname_lower_idx ON table(lower(fieldname))

trình lập kế hoạch truy vấn (trong cơ sở dữ liệu) sẽ biết sử dụng lower(fieldname) đó lập chỉ mục khi tìm kiếm với lower(fieldname) truy vấn.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Không thể xử lý truy vấn FULL JOIN MySQL

  2. MySQL đấu với - TRONG CHẾ ĐỘ BOOLEAN?

  3. Cần trợ giúp xây dựng truy vấn sql với tham gia và mối quan hệ nhiều đến nhiều ở đâu

  4. cách lấy tổng của một cột bằng truy vấn codeigniter

  5. trên bản cập nhật khóa trùng lặp với một điều kiện?