2011-03-03 47 views
3

可以說我有在Postgres的兩個表:Postgres的CAST MACADDR

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. 

SOFAR我已經搜索了一個解決方案,我知道我必須CAST。但我怎樣才能將類型macaddr作爲varhcar?

+0

如何可以在Mac地址與用戶名相同嗎?你肯定有非常奇怪的用戶名然後... – 2011-03-03 11:56:41

+0

當你想使用基於mac的認證時,這在RADIUS世界中是非常正常的。 – wilcox 2011-03-03 12:20:59

回答

2

正式風格:CAST(mac AS varchar)

PostgreSQL的風格:mac::varchar

如:

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

您可以通過::text做到像如下:

SELECT * FROM table_rad WHERE username = mac::text;