diff --git a/handlers/views_handler_argument_string.inc b/handlers/views_handler_argument_string.inc
index a45ae4e..f57c443 100644
--- a/handlers/views_handler_argument_string.inc
+++ b/handlers/views_handler_argument_string.inc
@@ -253,7 +253,8 @@ class views_handler_argument_string extends views_handler_argument {
       case 'ucwords':
         if ($multibyte == UNICODE_MULTIBYTE) {
           return mb_convert_case($string, MB_CASE_TITLE);
-        } else {
+        } 
+        else {
           return ucwords($string);
         }
     }
diff --git a/handlers/views_handler_field.inc b/handlers/views_handler_field.inc
index bf00f93..e11ff73 100644
--- a/handlers/views_handler_field.inc
+++ b/handlers/views_handler_field.inc
@@ -354,6 +354,7 @@ class views_handler_field extends views_handler {
         'absolute' => array('default' => '', 'translatable' => FALSE),
         'external' => array('default' => '', 'translatable' => FALSE),
         'replace_spaces' => array('default' => '', 'translatable' => FALSE),
+        'case' => array('default' => 'none', 'translatable' => FALSE),
         'trim_whitespace' => array('default' => FALSE),
         'alt' => array('default' => '', 'translatable' => TRUE),
         'rel' => array('default' => ''),
@@ -661,7 +662,22 @@ class views_handler_field extends views_handler {
           'edit-options-alter-make-link' => array(1),
         ),
       );
-
+      $form['alter']['case'] = array(
+        '#type' => 'select',
+        '#title' => t('Transform the case'),
+        '#description' => t('When printing url paths, how to transform the case of the filter value. Do not use this unless with Postgres as it uses case sensitive comparisons.'),
+        '#dependency' => array(
+          'edit-options-alter-make-link' => array(1),
+        ),
+        '#options' => array(
+          'none' => t('No transform'),
+          'upper' => t('Upper case'),
+          'lower' => t('Lower case'),
+          'ucfirst' => t('Capitalize first letter'),
+          'ucwords' => t('Capitalize each word'),
+        ),
+        '#default_value' => $this->options['alter']['case'],
+      );
       $form['alter']['link_class'] = array(
         '#title' => t('Link class'),
         '#type' => 'textfield',
@@ -1026,6 +1042,31 @@ If you would like to have the characters %5B and %5D please use the html entity
   }
 
   /**
+   * Transform the case of a string biased on the option provided.
+   */
+  function case_transform($string, $option) {
+    global $multibyte;
+
+    switch ($this->options['alter'][$option]) {
+      default:
+        return $string;
+      case 'upper':
+        return drupal_strtoupper($string);
+      case 'lower':
+        return drupal_strtolower($string);
+      case 'ucfirst':
+        return drupal_strtoupper(drupal_substr($string, 0, 1)) . drupal_substr($string, 1);
+      case 'ucwords':
+        if ($multibyte == UNICODE_MULTIBYTE) {
+          return mb_convert_case($string, MB_CASE_TITLE);
+        } 
+        else {
+          return ucwords($string);
+        }
+      }
+    }
+
+  /**
    * Trim the field down to the specified length.
    */
   function render_trim_text($alter, $value) {
@@ -1085,6 +1126,10 @@ If you would like to have the characters %5B and %5D please use the html entity
       return $text;
     }
 
+    if (!empty($alter['case']) && $alter['case'] != 'none') {
+      $path = $this->case_transform($path, 'case');
+    }
+
     // If no scheme is provided in the $path, assign the default 'http://'.
     // This allows a url of 'www.example.com' to be converted to 'http://www.example.com'.
     // Only do this on for external URLs.
