派克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日

悬赏问题

  • ¥15 多址通信方式的抗噪声性能和系统容量对比
  • ¥15 winform的chart曲线生成时有凸起
  • ¥15 msix packaging tool打包问题
  • ¥15 finalshell节点的搭建代码和那个端口代码教程
  • ¥15 Centos / PETSc / PETGEM
  • ¥15 centos7.9 IPv6端口telnet和端口监控问题
  • ¥20 完全没有学习过GAN,看了CSDN的一篇文章,里面有代码但是完全不知道如何操作
  • ¥15 使用ue5插件narrative时如何切换关卡也保存叙事任务记录
  • ¥20 海浪数据 南海地区海况数据,波浪数据
  • ¥20 软件测试决策法疑问求解答