diff --git a/web/pgadmin/static/js/slickgrid/slick.pgadmin.editors.js b/web/pgadmin/static/js/slickgrid/slick.pgadmin.editors.js
index 19ad11d..e7c9b9c 100644
--- a/web/pgadmin/static/js/slickgrid/slick.pgadmin.editors.js
+++ b/web/pgadmin/static/js/slickgrid/slick.pgadmin.editors.js
@@ -15,7 +15,8 @@
         "ReadOnlyText": ReadOnlyTextEditor,
         "ReadOnlyCheckbox": ReadOnlyCheckboxEditor,
         "ReadOnlypgText": ReadOnlypgTextEditor,
-        "ReadOnlyJsonText": ReadOnlyJsonTextEditor
+        "ReadOnlyJsonText": ReadOnlyJsonTextEditor,
+        "CustomNumber": CustomNumberEditor
       }
     }
   });
@@ -107,11 +108,22 @@
     };
 
     this.loadValue = function (item) {
-      $input.val(defaultValue = item[args.column.field]);
-      $input.select();
+      if (item[args.column.field] === "") {
+        $input.val("''");
+      }
+      else {
+        $input.val(defaultValue = item[args.column.field]);
+        $input.select();
+      }
     };
 
     this.serializeValue = function () {
+      if ($input.val() === "") {
+        return null;
+      }
+      else if ($input.val() === "''") {
+        return "''";
+      }
       return $input.val();
     };
 
@@ -246,6 +258,9 @@
     };
 
     this.serializeValue = function () {
+      if ($input.val() === "") {
+        return null;
+      }
       return $input.val();
     };
 
@@ -631,4 +646,76 @@
     this.init();
   }
 
+  function CustomNumberEditor(args) {
+    var $input;
+    var defaultValue;
+    var scope = this;
+
+    this.init = function () {
+      $input = $("<INPUT type=text class='editor-text' />");
+
+      $input.bind("keydown.nav", function (e) {
+        if (e.keyCode === $.ui.keyCode.LEFT || e.keyCode === $.ui.keyCode.RIGHT) {
+          e.stopImmediatePropagation();
+        }
+      });
+
+      $input.appendTo(args.container);
+      $input.focus().select();
+    };
+
+    this.destroy = function () {
+      $input.remove();
+    };
+
+    this.focus = function () {
+      $input.focus();
+    };
+
+    this.loadValue = function (item) {
+      defaultValue = item[args.column.field];
+      $input.val(defaultValue);
+      $input[0].defaultValue = defaultValue;
+      $input.select();
+    };
+
+    this.serializeValue = function () {
+      if ($input.val() === "") {
+        return null;
+      }
+      return parseInt($input.val(), 10) || 0;
+    };
+
+    this.applyValue = function (item, state) {
+      item[args.column.field] = state;
+    };
+
+    this.isValueChanged = function () {
+      return (!($input.val() == "" && defaultValue == null)) && ($input.val() != defaultValue);
+    };
+
+    this.validate = function () {
+      if (isNaN($input.val())) {
+        return {
+          valid: false,
+          msg: "Please enter a valid integer"
+        };
+      }
+
+      if (args.column.validator) {
+        var validationResults = args.column.validator($input.val());
+        if (!validationResults.valid) {
+          return validationResults;
+        }
+      }
+
+      return {
+        valid: true,
+        msg: null
+      };
+    };
+
+    this.init();
+  }
+
 })(jQuery);
diff --git a/web/pgadmin/static/js/slickgrid/slick.pgadmin.formatters.js b/web/pgadmin/static/js/slickgrid/slick.pgadmin.formatters.js
index 3b4aa3c..f44604f 100644
--- a/web/pgadmin/static/js/slickgrid/slick.pgadmin.formatters.js
+++ b/web/pgadmin/static/js/slickgrid/slick.pgadmin.formatters.js
@@ -12,7 +12,8 @@
       "Formatters": {
         "JsonString": JsonFormatter,
         "Numbers": NumbersFormatter,
-        "Checkmark": CheckmarkFormatter
+        "Checkmark": CheckmarkFormatter,
+        "Text": TextFormatter,
       }
     }
   });
@@ -41,9 +42,13 @@
   }
 
   function NumbersFormatter(row, cell, value, columnDef, dataContext) {
-    if (value == null || value === "") {
-      return "";
-    } else {
+    if (value === null) {
+      return "<span class='pull-right'>[null]</span>";
+    }
+    else if (value === "") {
+      return '';
+    }
+    else {
       return "<span style='float:right'>" + value + "</span>";
     }
   }
@@ -55,4 +60,16 @@
     return value ? "true" : "false";
   }
 
+  function TextFormatter(row, cell, value, columnDef, dataContext) {
+    if (value === null) {
+      return "<span class='pull-left'>[null]</span>";
+    }
+    else if (value === "''") {
+      return "";
+    }
+    else {
+      return value;
+    }
+  }
+
 })(jQuery);
diff --git a/web/pgadmin/tools/sqleditor/templates/sqleditor/js/sqleditor.js b/web/pgadmin/tools/sqleditor/templates/sqleditor/js/sqleditor.js
index 698e84d..d21b9d0 100644
--- a/web/pgadmin/tools/sqleditor/templates/sqleditor/js/sqleditor.js
+++ b/web/pgadmin/tools/sqleditor/templates/sqleditor/js/sqleditor.js
@@ -636,7 +636,7 @@ define(
                                               : Slick.Editors.ReadOnlyJsonText;
               options['formatter'] = Slick.Formatters.JsonString;
             } else if(c.cell == 'number') {
-              options['editor'] = is_editable ? Slick.Editors.Text
+              options['editor'] = is_editable ? Slick.Editors.CustomNumber
                                               : Slick.Editors.ReadOnlyText;
               options['formatter'] = Slick.Formatters.Numbers;
             } else if(c.cell == 'boolean') {
@@ -646,6 +646,7 @@ define(
             } else {
               options['editor'] = is_editable ? Slick.Editors.pgText
                                               : Slick.Editors.ReadOnlypgText;
+              options['formatter'] = Slick.Formatters.Text;
             }
 
            grid_columns.push(options)
