Postgres CAST macaddr

3
假设我在Postgres中有两个表:
Name: table_rad
Column    Type   
id        integer
username  character varying(64)

Name: table_mac
Column    Type
id        integer
mac       macaddr

我想进行一个连接操作:

SELECT * FROM table_rad WHERE username = mac;

Postgres会抱怨:

ERROR: operator does no exist: character varying = macaddr
LINE 1: ...ELECT * from table_rad WHERE username = mac;
                                                 ^    
Hint: No operator matches the given name and argument type(s). You might need to add explicit type casts.

我已经通过谷歌搜索了解到需要使用CAST来解决这个问题。但是如何将macaddr类型转换为varchar类型呢?


MAC地址怎么可能和用户名一样呢?你的用户名肯定非常奇怪... - user330315
当一个人想要使用基于MAC地址的认证时,在RADIUS世界中这是非常正常的。 - wilcox
2个回答

3

正式风格:CAST(mac AS varchar)

PostgreSQL风格:mac::varchar

例如:

SELECT * FROM table_rad JOIN table_mac ON username = CAST(mac AS varchar)

1
你可以通过以下方式使用 ::text 来完成它:
SELECT * FROM table_rad WHERE username = mac::text;

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接