Postgres Conditional Query - Лучшая практика для сравнения строки с несколькими другими строками - PullRequest
1 голос
/ 07 марта 2012

Я сейчас использую это, чтобы получить мой результат:

pg_prepare($tableConnection, "", "SELECT * FROM star_wars_action_figures WHERE cool = 't' AND weapon ILIKE $1 OR weapon ILIKE $2 OR weapon ILIKE $3 OR weapon ILIKE $4 OR weapon ILIKE $5") or die( $tableDataRetrieved = false );

$actionFigureTables = pg_fetch_all(pg_execute('', array("%gun%","%".$tagArray[0]."%","%".$tagArray[1]."%","%".$tagArray[2]."%","%".$tagArray[3]."%")));

На английском я собираюсь для этого: Посмотрите в star_wars_action_figures, верните только те, которые cool, и только тогда, если оружие содержит gun И любое из этих других видов оружия (lightsaber | fist | knife | wit)

ТамДолжен ли быть более эффективный и надежный способ сделать это правильно?

Я думаю, что это основной простой вопрос, и мне нужно разобраться в этой логике, прежде чем я смогу прогрессировать.

Приветствия!

Бо

1 Ответ

1 голос
/ 07 марта 2012

Postgres знает регулярные выражения POSIX .Ваш запрос может быть сформулирован как

...AND weapon ~* $1

, если вы передаете gun|lightsaber|fist|knife|wit первому параметру.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...