diff --git a/commands/sql/sql.drush.inc b/commands/sql/sql.drush.inc
index d5611dc..a8d19c9 100644
--- a/commands/sql/sql.drush.inc
+++ b/commands/sql/sql.drush.inc
@@ -81,11 +81,11 @@ function sql_drush_command() {
     'examples' => array(
       'drush sql-query "SELECT * FROM users WHERE uid=1"' => 'Browse user record. Table prefixes, if used, must be added to table names by hand.',
       'drush sql-query --db-prefix "SELECT * FROM {users} WHERE uid=1"' => 'Browse user record. Table prefixes are honored.  Caution: curly-braces will be stripped from all portions of the query.',
-      '`drush sql-connect` < example.sql' => 'Import sql statements from a file into the current database.',
+       'drush sql-query "UPDATE {users} SET mail = \'%2\' where uid = \'%1\'" 123 user@domain' => 'Change user record. Table prefixes are honored. %1 - %n substituted from additional arguments.',
+     '`drush sql-connect` < example.sql' => 'Import sql statements from a file into the current database.',
     ),
     'arguments' => array(
        'query' => 'An SQL query. Ignored if \'file\' is provided.',
-       'file' => 'Path to a file containing the SQL to be run.',
     ),
     'options' => array(
       'extra' => 'Add custom options to the mysql command.',
@@ -452,8 +452,14 @@ function _drush_sql_get_table_list($option_name) {
 /**
  * Command callback. Executes the given SQL query on the Drupal database.
  */
-function drush_sql_query($query, $filename = NULL) {
-  return _drush_sql_query($query, NULL, $filename);
+function drush_sql_query($query) {
+  $args = func_get_args();
+  $replacements = array();
+  foreach ($args as $index => $value) {
+    $replacements["%$index"] = $value;
+  }
+  unset($replacements['%0']);
+  return _drush_sql_query($query, NULL, NULL, $replacements, drush_get_option('db-prefix', NULL));
 }
 
 /*
@@ -466,16 +472,20 @@ function drush_sql_query($query, $filename = NULL) {
  * @param string $filename
  *   A path to a file containing the SQL to be executed.
  */
-function _drush_sql_query($query, $db_spec = NULL, $filename = NULL) {
+function _drush_sql_query($query, $db_spec = NULL, $filename = NULL, $replacements = array(), $substituteBraces = NULL) {
   $scheme = _drush_sql_get_scheme($db_spec);
-
+  // If $substituteBraces is not explicitly set, then we will default it to
+  // TRUE if $replacements were provided, and FALSE otherwise.
+  if (!isset($substituteBraces)) {
+    $substituteBraces = (count($replacements) > 0);
+  }
   // Inject table prefixes as needed.
   if (drush_has_boostrapped(DRUSH_BOOTSTRAP_DRUPAL_DATABASE)) {
     if ($filename) {
       $query = file_get_contents($filename);
     }
     // Enable prefix processing which can be dangerous so off by default. See http://drupal.org/node/1219850.
-    if (drush_get_option('db-prefix')) {
+    if ($substituteBraces) {
       if (drush_drupal_major_version() >= 7) {
         $query = Database::getConnection()->prefixTables($query);
       }
@@ -484,7 +494,9 @@ function _drush_sql_query($query, $db_spec = NULL, $filename = NULL) {
       }
     }
   }
-
+  if (count($replacements) > 0) {
+    $query = str_replace(array_keys($replacements), array_values($replacements), $query);
+  }
   // Convert mysql 'show tables;' query into something pgsql understands
   if (($scheme == 'pgsql') && ($query == 'show tables;')) {
     $query = drush_sql_show_tables_pgsql();
