diff --git a/lib/geocoder/stores/active_record.rb b/lib/geocoder/stores/active_record.rb
index 38d0abc03f050d0bb08c5ff799e59089c39298f1..9587d840d7bb02fc99c30d43266c9cbfd17171de 100644
--- a/lib/geocoder/stores/active_record.rb
+++ b/lib/geocoder/stores/active_record.rb
@@ -194,13 +194,16 @@ module Geocoder::Store
         else
           clause = (columns || full_column_name("*"))
         end
+
+        identifierType = using_postgresql? ? "::character(255)" : ""
+
         if distance
           clause += ", " unless clause.empty?
-          clause += "#{distance} AS #{distance_column}"
+          clause += "'#{distance}'#{identifierType} AS #{distance_column}"
         end
         if bearing
           clause += ", " unless clause.empty?
-          clause += "#{bearing} AS #{bearing_column}"
+          clause += "'#{bearing}'#{identifierType} AS #{bearing_column}"
         end
         clause
       end
@@ -222,6 +225,11 @@ module Geocoder::Store
         connection.adapter_name.match(/sqlite/i)
       end
 
+      def using_postgresql?
+        connection.adapter_name.match(/postgres/i)
+      end
+
+
       ##
       # Value which can be passed to where() to produce no results.
       #