PostgreSQL - не могу найти (LIKE и ILIKE) столбец с типом 'macaddr' - PullRequest
0 голосов
/ 10 декабря 2018

Я пытаюсь найти в моей БД адрес Mac ... и столкнулся с кучей неприятностей.

SELECT

    devices.mac AS dev_mac

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

Я также пытался CAST(devices.mac AS varchar) AS dev_mac до CAST как varchar и до сих пор не могучтобы выполнить поиск.

Я также пробовал ILIKE.И, похоже, ничего не работает.

Также пытались заменить :, ничем.


Продолжайте получать ошибки, такие как:

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

Что я делаю неправильно?Как правильно искать тип данных macaddr?

Ответы [ 2 ]

0 голосов
/ 10 декабря 2018

В предложении WHERE необходимо CAST для поля macaddr до varchar, тогда вы можете использовать любой оператор сравнения строк (LIKE, =, ...).

Как:

SELECT mac 
FROM devices
WHERE CAST(mac as varchar) LIKE '00:00:11:00:99:1B'
0 голосов
/ 10 декабря 2018

В чем проблема?Если вы приведете его к 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...