"column_name(10)" preg_match('/^([\w]+)(\(?\d*\)?)$/', $columnName, $matches); // match "column_name" and "column_name(10)" $nameOnly = $matches[1]; // eg "column_name" $columnNamesOnly[] = $nameOnly; $column = "`$nameOnly`"; if (!empty($matches[2])) { $column .= ' ' . $matches[2]; // eg "(10)" } $columns[] = $column; } if (empty($indexName)) { $indexName = $this->indexNamePrefix . '_' . implode('_', $columnNamesOnly); } $sql = sprintf("ALTER TABLE `%s` ADD %s %s (%s)", $table, $this->indexType, $indexName, implode(', ', $columns)); parent::__construct($sql, array(static::ERROR_CODE_DUPLICATE_KEY, static::ERROR_CODE_KEY_COLUMN_NOT_EXISTS)); } }