title: sqlmock is not matching query, but query is identical and log output shows the same
body: <p>I'm trying to write tests for some code using Gorm using sqlmock. I figured out writing tests for my insert function but now pulling my hair out trying to get an update working.</p>
  
  <p>First piece of the workflow merely queries the record from the database. I can't get it to match my SQL even though the log output shows them as being identical.</p>
  
  <p>Here is the error message:</p>
  
  <pre><code>(/path/to/my/project/database.go:263)
  [2020-01-08 10:29:40]  Query: could not match actual sql: "SELECT * FROM "storage_pools" WHERE "storage_pools"."deleted_at" IS NULL AND ((poolid = ?)) ORDER BY "storage_pools"."id" ASC LIMIT 1" with expected regexp "SELECT * FROM "storage_pools" WHERE "storage_pools"."deleted_at" IS NULL AND ((poolid = ?)) ORDER BY "storage_pools"."id" ASC LIMIT 1"
  </code></pre>
  
  <p>I also tried using ExpectExec insert of ExpectQuery.</p>
  
  <pre><code>    for _, c := range cases {
  
          db, mock, err := sqlmock.New()
          if err != nil {
              t.Fatal(err)
          }
  
          DB, err := gorm.Open("sqlite3", db)
          if err != nil {
              t.Fatal(err)
          }
          DB.LogMode(true)
  
          mock.ExpectQuery(`SELECT * FROM "storage_pools" WHERE "storage_pools"."deleted_at" IS NULL AND ((poolid = ?)) ORDER BY "storage_pools"."id" ASC LIMIT 1`)
  
          err = UpdateStoragePool(DB, &amp;c.givenPool)
          if !reflect.DeepEqual(c.wantedError, err) {
              t.Fatalf("expecting errror %q, got %q", c.wantedError, err)
          }
  
          // if we didn't have any errors during the tx, check all expectations were met
          if c.wantedError == nil {
              if err := mock.ExpectationsWereMet(); err != nil {
                  t.Fatalf(err.Error())
              }
          }
  
      }
  </code></pre>
  
  <p>I've also tried:</p>
  
  <pre><code>mock.ExpectQuery(`SELECT * FROM "storage_pools" WHERE "storage_pools"."deleted_at" IS NULL AND ((poolid = '1')) ORDER BY "storage_pools"."id" ASC LIMIT 1`).WithArgs(1)  
  
  mock.ExpectExec(`SELECT * FROM "storage_pools" WHERE "storage_pools"."deleted_at" IS NULL AND ((poolid = ?)) ORDER BY "storage_pools"."id" ASC LIMIT 1`)  
  
  mock.ExpectExec(`SELECT * FROM "storage_pools" WHERE "storage_pools"."deleted_at" IS NULL AND ((poolid = '1')) ORDER BY "storage_pools"."id" ASC LIMIT 1`).WithArgs(1)
  </code></pre>
  
  <p>Anyone have any ideas what I'm doing wrong here?</p>
  
  <p><strong>* UPDATE *</strong></p>
  
  <p>This DOES NOT work for select statements for some reason:</p>
  
  <pre><code>        mock.ExpectExec(`SELECT \* FROM "storage_pools"`).
              WithArgs(c.givenPool.PoolId).WillReturnResult(sqlmock.NewResult(1, 1))
  </code></pre>
  
  <pre><code>[2020-01-13 10:32:21]  call to Query 'SELECT * FROM "storage_pools"  WHERE "storage_pools"."deleted_at" IS NULL AND ((poolid = ?)) ORDER BY "storage_pools"."id" ASC LIMIT 1' with args [{Name: Ordinal:1 Value:1}], was not expected, next expectation is: ExpectedExec =&gt; expecting Exec or ExecContext which:
    - matches sql: 'SELECT \* FROM "storage_pools"'
    - is with arguments:
      0 - 1
    - should return Result having:
        LastInsertId: 1
        RowsAffected: 1
  </code></pre>
  
  <p>This DOES WORK but now I've hit a new problem where. For starters Gorm is doing 2 select statements for some reason... The first one works and finds the row, the second query does not find the same row. I'm at a loss here. About to just give up on this library. I could have written my own in the time we've spent trying to get it working.</p>
  
  <pre><code>        db, mock, err := sqlmock.New(sqlmock.QueryMatcherOption(sqlmock.QueryMatcherEqual))
          if err != nil {
              t.Fatal(err)
          }
  
          DB, err := gorm.Open("postgres", db)
          if err != nil {
              t.Fatal(err)
          }
          DB.LogMode(true)
  
          mockedRow := sqlmock.NewRows([]string{"id", "created_at", "updated_at", "poolid"}).AddRow(1, time.Now(), time.Now(), "1")
  
          // Mock the complete transaction
          mock.ExpectQuery(`SELECT * FROM "storage_pools"  WHERE "storage_pools"."deleted_at" IS NULL AND ((poolid = ?)) ORDER BY "storage_pools"."id" ASC LIMIT 1`).
              WithArgs(c.givenPool.PoolId).
              WillReturnRows(mockedRow)
  
          mock.ExpectQuery(`SELECT * FROM "storage_pools" WHERE "storage_pools"."deleted_at" IS NULL AND "storage_pools"."id" = ? AND ((poolid = ?)) ORDER BY "storage_pools"."id" ASC`).
              WithArgs(1, c.givenPool.PoolId).
              WillReturnRows(mockedRow)
  </code></pre>