1. 程式人生 > >mysql資料庫和查詢語句中欄位型別不匹配出現異常,查詢或更新多條的原因

mysql資料庫和查詢語句中欄位型別不匹配出現異常,查詢或更新多條的原因

  • 說明
  1. 表結構和where查詢的欄位型別一致,均為字串或者是整數,不會型別轉化
  2. 表結構和where查詢的欄位型別不一致:
    1. 一個為TIMESTAMP或者是DATETIME,另一個為常量,常量會轉化為TIMESTAMP,再進行比較
    2. 一個為DECIMAL或者是整數,整數會轉化為DECIMAL,再進行比較
    3. 一個為整數,另一個為字串,會都轉化為浮點型,再進行比較

注意:整數為準確值,浮點數為精度值,浮點型儲存結構是1個符號位,8個指數位,23個尾數,所以當位數超過7位的時候就會不精確,此時查詢會出現問題

  • 問題

e_record和record_開頭的附件表,不排除其他表有這種情況,在查詢和更新資料時,因為資料庫儲存的id為varchar,如果查詢時不使用單引號或者雙引號,此時會處理多條

例項:

SELECT count(*)  from record_49 where id  = 4913000000000001461 會查詢出18條

4913000000000001461 轉化為浮點數:4.913000000000001E18

但是表中4913000000000000518、4913000000000000582等id轉化為浮點數都是:4.913000000000001E18

  • 使用和表結構一樣的欄位型別,將id加上雙引號