【问题标题】:PostgreSQL - Can't Search (LIKE and ILIKE) a column with 'macaddr' typePostgreSQL - 无法搜索(LIKE 和 ILIKE)“macaddr”类型的列
【发布时间】:2018-12-09 23:30:33
【问题描述】:

我正在尝试在我的数据库中搜索 Mac 地址...但遇到了一堆麻烦。

SELECT

    devices.mac AS dev_mac

WHERE devices.mac LIKE '00:00:11:00:99:1B'

我也尝试将 CAST(devices.mac AS varchar) AS dev_macCAST 作为 varchar,但仍然无法执行搜索。

我也试过ILIKE。而且似乎没有任何效果。

也试过替换:,没用。


不断收到类似这样的错误:

ERROR:  operator does not exist: macaddr ~~ unknown
ERROR:  operator does not exist: macaddr ~~* unknown

我做错了什么?如何正确搜索macaddr 数据类型?

【问题讨论】:

    标签: php sql postgresql


    【解决方案1】:

    在你的WHERE子句中,你需要将CASTmacaddr字段改为varchar,然后你可以在上面使用任何字符串比较运算符(LIKE=,...)。

    喜欢:

    SELECT mac 
    FROM devices
    WHERE CAST(mac as varchar) LIKE '00:00:11:00:99:1B'
    

    【讨论】:

      【解决方案2】:

      有什么问题?如果您将其转换为VARCHAR,它会立即生效:

      create table m1 (
        id int,
        mac1 macaddr
      );
      
      insert into m1 (id, mac1) values (1, '08:00:2b:01:02:03');
      insert into m1 (id, mac1) values (2, '08:00:2b:01:02:04');
      
      select id, cast(mac1 as varchar) 
      from m1 
      where cast(mac1 as varchar) like '%4'
      

      结果:

      id           mac1             
      ------------------------------
      2            08:00:2b:01:02:04
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-12-18
        • 1970-01-01
        • 2011-05-14
        • 2022-01-04
        • 2021-12-05
        • 2017-03-14
        相关资源
        最近更新 更多