亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Mysql隱式類型轉換方式

 更新時間:2024年04月03日 11:25:34   作者:碼農(nóng)弓長先生  
這篇文章主要介紹了Mysql隱式類型轉換方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教

一、實例操作

如下圖user表結構

查詢語句1

  • 執(zhí)行結果:

查詢語句2

  • 執(zhí)行結果:

查詢語句3

  • 執(zhí)行結果:

查詢語句4

  • 執(zhí)行結果:

  • 結果分析:

從上面四則查詢語句中可以看出 mobile的字段為字符類型時,當查詢時等式是字符類型和數(shù)字類型時執(zhí)行結果不一致,而status的字段為數(shù)字類型,當查詢時等式是字符類型和數(shù)字類型時執(zhí)行結果一致。

這是為什么呢?

二、mysql 隱式類型轉換

上述案例其真實的原因時mysql的隱式類型轉換,那什么是隱式類型轉換呢?

1. 隱式類型轉換規(guī)則

官方文檔

  • 如果一個或兩個參數(shù)均為NULL,則比較的結果為NULL,除了 相等比較運算符。對于NULL NULL,結果為true。
  • 如果比較操作中的兩個參數(shù)都是字符串,則將它們作為字符串進行比較。
  • 如果兩個參數(shù)都是整數(shù),則將它們作為整數(shù)進行比較。
  • 如果不與數(shù)字比較,則將十六進制值視為二進制字符串。
  • 如果參數(shù)之一是 timestamp 或 datatime column,而另一個參數(shù)是常量,則在執(zhí)行比較之前,該常量將轉換為時間戳。
  • 如果參數(shù)之一是十進制值,則比較取決于另一個參數(shù)。如果另一個參數(shù)是十進制或整數(shù)值,則將參數(shù)作為十進制值進行比較;如果另一個參數(shù)是浮點值,則將參數(shù)作為浮點值進行比較。
  • 在所有其他情況下,將參數(shù)作為浮點數(shù)(實數(shù))進行比較。例如,將字符串和數(shù)字操作數(shù)進行比較,將其作為浮點數(shù)的比較。

通過隱式類型轉換可以得出上述示例的結果:當查詢中有數(shù)字時那么會將字符串轉化成數(shù)字進行比較。

所以當你的列為字符串時那么需要將列中字符串進行類型格式轉換而進行字符格式轉換之后則與索引不一致;

當你的列為數(shù)字時查詢等式為字符串時只是把查詢的常量轉成數(shù)字并不影響列的類型所以依然可以使用索引并沒有破壞索引的類型。

2. 隱式類型轉換實例

3. 避免隱式類型轉換

可以使用內(nèi)置函數(shù)對類型強制性轉換

  • case( value as type)
  • conver(value,type)

我們需要充分了解嗎MySQL里隱式類型轉換的規(guī)則,同時我們?nèi)粘T趯慡QL時一定要檢查參數(shù)類型與數(shù)據(jù)庫字段類型是否一致,否則可能造成隱式類型轉換,不能正常應用索引,造成慢查詢,甚至拖垮整個數(shù)據(jù)庫服務集群。

如果參數(shù)不一致,也可以考慮使用CAST函數(shù)顯性轉換成一致類型。

總結

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

  • Linux中查看MySQL服務是否開啟方式

    Linux中查看MySQL服務是否開啟方式

    這篇文章主要介紹了Linux中查看MySQL服務是否開啟方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-09-09
  • MySQL?Workbench快速引入sql文件的圖文教程

    MySQL?Workbench快速引入sql文件的圖文教程

    在MySQL使用時,通常需要將數(shù)據(jù)庫sql文件保存,或者是導入他人的sql文件,可以使用workbench處理,這篇文章主要給大家介紹了關于MySQL?Workbench快速引入sql文件的相關資料,需要的朋友可以參考下
    2023-11-11
  • MySQL 實用命令

    MySQL 實用命令

    對于剛接觸到mysql的朋友,需要的了解下,mysql的一些小技巧。
    2009-03-03
  • mysql索引失效的五種情況分析

    mysql索引失效的五種情況分析

    這篇文章主要介紹了mysql索引失效的5種情況分析,需要的朋友可以參考下
    2015-01-01
  • mysql5.7.18安裝時提示無法找到入口問題的解決方法

    mysql5.7.18安裝時提示無法找到入口問題的解決方法

    這篇文章主要為大家詳細介紹了mysql5.7.18安裝時出現(xiàn)無法找到入口問題的解決方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-04-04
  • linux 下配置安裝mysql以及配置【經(jīng)驗】

    linux 下配置安裝mysql以及配置【經(jīng)驗】

    這篇文章主要介紹了linux 下配置安裝mysql以及配置【經(jīng)驗】,需要的朋友可以參考下
    2016-05-05
  • php連接MySQL的兩種方式對比

    php連接MySQL的兩種方式對比

    這篇文章主要介紹了php連接MySQL的兩種方式對比,一種是原生的鏈接方式另外一種是PDO方式,附上示例,推薦給大家,有需要的小伙伴可以參考下
    2015-04-04
  • 使用MySQL實現(xiàn)一個分布式鎖

    使用MySQL實現(xiàn)一個分布式鎖

    在分布式系統(tǒng)中,分布鎖是一個最基礎的工具類。這篇文章主要介紹了用MySQL實現(xiàn)一個分布式鎖,本文通過實例代碼相結合給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-12-12
  • Mysql ALTER TABLE加字段的時候到底鎖不鎖表

    Mysql ALTER TABLE加字段的時候到底鎖不鎖表

    本文主要介紹了Mysql ALTER TABLE加字段的時候到底鎖不鎖表,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-08-08
  • mysql 獲取時間方式

    mysql 獲取時間方式

    這篇文章主要介紹了mysql 獲取時間方式,獲取指定時間,獲取當前時間等相關內(nèi)容,需要的朋友可以參考一下,希望對你有所幫助
    2022-03-03

最新評論