Postgres条件查询 - 将字符串与其他几个字符串进行比较的最佳实践

时间:2012-03-07 13:54:58

标签: postgresql select

我目前正在使用它来获取结果:

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 个答案:

答案 0 :(得分:1)

Postgres知道POSIX regular expressions。您的查询可以表述为

...AND weapon ~* $1

如果您将gun|lightsaber|fist|knife|wit传递给第一个参数。