Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Rails SQL-Abfrage bei unbekannter (dynamischer) Anzahl von Abfragen mit LIKE

Was Sie tun möchten, ist ein Array als einzelnes Argument an where zu übergeben die sowohl die Abfrage als auch die dynamischen Werte enthält. Zum Beispiel:

where(["att_1 LIKE ? OR att_2 LIKE ?", "value1", "value2"])

Wenn ein Array als erstes und einziges Argument übergeben wird, wird das erste Element des Arrays als Vorlage behandelt. Die folgenden Array-Werte werden als dynamische Werte für die Abfragevorlage behandelt.

Für Ihr Beispiel, anstatt zwei separate Variablen queries zu haben und query , kombinieren Sie sie zu einer query Variable:

# A single array with the query AND values
query = ["hobby LIKE ? OR (gender LIKE ? AND hobby LIKE ?)", "skiing", "male", "jogging"]

# Run the `where` with a single array as the argument
YourModel.where(query)

Dadurch können Sie die DB mit einer unbekannten Anzahl von Werten mit LIKE abfragen .