Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

SQLAlchemy case tidak sensitif dalam permintaan pencarian berbasis?

Ini harus dikompilasi dengan tepat...

query( models.Object )\
.filter( 
     sqlalchemy.func.upper( models.Object.fieldname )\
     .in_( (sqlalchemy.func.upper(foo) , sqlalchemy.func.upper(bar), ) )
)\
.all()
  1. Anda juga bisa memasukkan teks huruf besar saja. secara pribadi, saya akan melakukan in_( foo.uppercase() , bar.uppercase() )

  2. SqlAlchemy bekerja dengan DBAPI untuk meneruskan parameter bind ke penyimpanan data backend Anda. Terjemahan -- nilai diloloskan secara otomatis.

jika Anda ingin melakukan daftar string, sesuatu seperti ini akan berfungsi

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

Hanya ingin menambahkan bahwa jika Anda ingin mengoptimalkan pilihan ini untuk kecepatan, dan menggunakan Postgres atau Oracle, Anda dapat membuat 'indeks fungsi'

CREATE INDEX table_fieldname_lower_idx ON table(lower(fieldname))

perencana kueri (dalam database) akan tahu untuk menggunakan lower(fieldname) indeks saat menelusuri lower(fieldname) kueri.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Penyortiran Kueri MySQL dengan Angka

  2. Permintaan SQL mengembalikan Operan harus berisi 1 kolom

  3. MySQL JIKA TIDAK NULL, lalu tampilkan 1, jika tidak tampilkan 0

  4. Basis data pencarian PDO menggunakan LIKE

  5. Cara memilih semua tabel dengan nama kolom dan memperbarui kolom itu