派克495 2022-12-30 15:55 采纳率: 91.3%
浏览 20
已结题

postgre DBI 一个字段多个值的模糊查询还能怎么写?

$sql=......where table.text % '家族1 OR 家族2 OR 家族3 OR 家族4 OR 家族5';
$sth=$dbh->prepare($sql);
$res=$sth->execute();

上面sql文的where条件在不得更改[table.text % ']和末尾的[']的前提下、还能有其他的写法吗?

  • 写回答

2条回答 默认 最新

  • |__WhoAmI__| 2022-12-30 16:19
    关注

    在不更改 where 条件中的 table.text % ' 和末尾的 ' 的前提下,有一种可能的写法是使用 IN 运算符。您可以将条件改写为:

    $sql = "SELECT * FROM table WHERE table.text % '家族1' OR table.text % '家族2' OR table.text % '家族3' OR table.text % '家族4' OR table.text % '家族5'";
    $sth = $dbh->prepare($sql);
    $res = $sth->execute();
    

    或者:

    $families = ['家族1', '家族2', '家族3', '家族4', '家族5'];
    $placeholders = implode(', ', array_fill(0, count($families), '?'));
    $sql = "SELECT * FROM table WHERE table.text % IN ($placeholders)";
    $sth = $dbh->prepare($sql);
    $res = $sth->execute($families);
    

    望采纳。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 1月26日
  • 已采纳回答 1月18日
  • 创建了问题 12月30日

悬赏问题

  • ¥20 我要一个分身加定位两个功能的安卓app
  • ¥15 基于FOC驱动器,如何实现卡丁车下坡无阻力的遛坡的效果
  • ¥15 IAR程序莫名变量多重定义
  • ¥15 (标签-UDP|关键词-client)
  • ¥15 关于库卡officelite无法与虚拟机通讯的问题
  • ¥15 目标检测项目无法读取视频
  • ¥15 GEO datasets中基因芯片数据仅仅提供了normalized signal如何进行差异分析
  • ¥100 求采集电商背景音乐的方法
  • ¥15 数学建模竞赛求指导帮助
  • ¥15 STM32控制MAX7219问题求解答