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

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日

悬赏问题

  • ¥50 如何实现uniapp编译的微信小程序做可回溯视频
  • ¥15 求Houdini使用行家,付费。价格面议。
  • ¥15 AttributeError: 'EasyDict' object has no attribute 'BACKUP_DB_INFO'
  • ¥15 前端高拍仪调用问题报错
  • ¥15 想用octave解决这个数学问题
  • ¥15 Centos新建的临时ip无法上网,如何解决?
  • ¥15 海康威视如何实现客户端软件对设备语音请求的处理。
  • ¥15 支付宝h5参数如何实现跳转
  • ¥15 MATLAB代码补全插值
  • ¥15 Typegoose 中如何使用 arrayFilters 筛选并更新深度嵌套的子文档数组信息