Mysql
 sql >> Baza danych >  >> RDS >> Mysql

SQLAlchemy nie rozróżnia wielkości liter w zapytaniu opartym na IN?

To powinno się dokładnie skompilować...

query( models.Object )\
.filter( 
     sqlalchemy.func.upper( models.Object.fieldname )\
     .in_( (sqlalchemy.func.upper(foo) , sqlalchemy.func.upper(bar), ) )
)\
.all()
  1. możesz też po prostu podać tekst pisany wielkimi literami. osobiście zrobiłbym in_( foo.uppercase() , bar.uppercase() )

  2. SqlAlchemy współpracuje z DBAPI, aby przekazać parametry wiązania do magazynu danych zaplecza. Tłumaczenie — wartości są automatycznie escapowane.

jeśli chcesz zrobić listę ciągów , coś takiego powinno działać

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

Chcę tylko dodać, że jeśli chcesz zoptymalizować te wybory pod kątem szybkości i jesteś w Postgres lub Oracle, możesz utworzyć „indeks funkcji”

CREATE INDEX table_fieldname_lower_idx ON table(lower(fieldname))

planista zapytań (w bazie danych) będzie wiedział, jak użyć tego lower(fieldname) indeks podczas wyszukiwania według lower(fieldname) zapytanie.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Odpowiednik SQLDependency dla MySQL

  2. jak powiązać dynamiczny json z widokiem drzewa wpf

  3. Jak znaleźć pasujące przedziały czasowe dla więcej niż 2 użytkowników

  4. Jak zapobiec duplikowaniu rekordów z mojej tabeli Wstaw ignorowanie nie działa tutaj

  5. Jak ustawić znacznik czasu może być powolnym zapytaniem?