PostgreSQL-无法搜索(喜欢和喜欢)具有“ macaddr”类型的列

时间:2018-12-09 23:30:34

标签: php sql postgresql

我正在尝试在数据库中搜索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数据类型?

2 个答案:

答案 0 :(得分:0)

出什么问题了?如果将其投射到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

答案 1 :(得分:0)

在您的WHERE子句中,您需要将CAST字段macaddr移至varchar,然后可以在其上使用任何字符串比较运算符(LIKE=,...)。

赞:

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