我目前正在使用它来获取结果:
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
)
必须有一种更有效,更可靠的方法吗?
我认为这是一个核心简单问题,需要在我能够取得进展之前让这种逻辑失效。
干杯!
博
答案 0 :(得分:1)
Postgres知道POSIX regular expressions。您的查询可以表述为
...AND weapon ~* $1
如果您将gun|lightsaber|fist|knife|wit
传递给第一个参数。