博客
关于我
PostgresSQL查询数据中用逗号隔开的数据以及@>与<@的区别
阅读量:800 次
发布时间:2023-03-03

本文共 843 字,大约阅读时间需要 2 分钟。

在某些应用场景中,我们需要对数据库中的类别数据进行查询。例如,某科室的数据存储为类别组合 '1,2,3',我们需要筛选出包含类别1的记录。在MySQL中,可以通过FIND_IN_SET函数或正则表达式实现这一点。然而,在PostgreSQL中,FIND_IN_SET函数可能不稳定,因此通常会采用其他方法来处理。

PostgreSQL中的解决方案

在PostgreSQL中,我们可以通过以下步骤实现类别数据的高效查询:

  • 使用string_to_array函数

    首先,我们需要将数据库字段从逗号分隔的字符串转换为数组。可以使用string_to_array函数来实现这一点。例如:

    string_to_array('1,2,3', ',')

    这会将字符串 '1,2,3' 转换为数组 ['1', '2', '3']。

  • 使用数组包含运算符@>

    接下来,我们可以使用PostgreSQL的数组包含运算符 @> 来筛选包含特定类别的记录。例如:

    WHERE arraycontains(arr, '1')

    这会返回包含 '1' 的所有记录。

  • 多条件查询

    如果需要对多个类别进行筛选,可以使用 <@> 运算符。例如:

    WHERE arraycontains(arr, '2') OR arraycontains(arr, '3')

    这会返回包含 '2' 或 '3' 的记录。

  • 运算符的具体含义

    • @>:表示“包含”某个值。

      例如:

      WHERE arraycontains(arr, '2') @> true

      这会筛选出包含 '2' 的记录。

    • <@:表示“包含于”某个字段。

      例如:

      WHERE arr @> '{2,3}'

      这会筛选出包含 '2' 或 '3' 的记录。

    总结

    通过以上方法,我们可以在PostgreSQL中高效地对多值类别数据进行查询。使用 string_to_array 和数组包含运算符,可以轻松实现包含特定类别的数据筛选。这些方法在实际应用中表现良好,能够满足复杂的查询需求。

    转载地址:http://dvxfk.baihongyu.com/

    你可能感兴趣的文章
    PIESDKDoNet二次开发配置注意事项
    查看>>
    PIL.Image、cv2的img、bytes相互转换
    查看>>
    Pillow lacks the JPEG 2000 plugin
    查看>>
    ping 命令的七种用法,看完瞬间成大神
    查看>>
    Pinia:$patch的使用场景
    查看>>
    Pinia:$subscribe()的使用场景
    查看>>
    Pinpoint对Kubernetes关键业务模块进行全链路监控
    查看>>
    Pinterest 大规模缓存集群的架构剖析
    查看>>
    pintos project (2) Project 1 Thread -Mission 1 Code
    查看>>
    PinYin4j库的使用
    查看>>
    PIP
    查看>>
    pip install goose-extractor // SyntaxError: Missing parentheses in call to 'print'
    查看>>
    pip install 出现报asciii码错误的解决
    查看>>
    pip throws TypeError: parse() got an unexpected keyword argument ‘transport_encoding‘ 在尝试安装新软件包时
    查看>>
    pip 下载慢
    查看>>
    pip 安装出现异常
    查看>>
    Pip 安装失败:需要 SSL
    查看>>
    Pip 安装挂起
    查看>>
    pip/pip3更换国内源
    查看>>
    pip3 install PyQt5 --user 失败
    查看>>