欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Mysql隱式類型轉換方式

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

一、實例操作

如下圖user表結構

查詢語句1

  • 執(zhí)行結果:

查詢語句2

  • 執(zhí)行結果:

查詢語句3

  • 執(zhí)行結果:

查詢語句4

  • 執(zhí)行結果:

  • 結果分析:

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

這是為什么呢?

二、mysql 隱式類型轉換

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

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

官方文檔

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

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

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

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

2. 隱式類型轉換實例

3. 避免隱式類型轉換

可以使用內置函數對類型強制性轉換

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

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

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

總結

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

相關文章

  • 關于Mysql通用查詢日志和慢查詢日志分析

    關于Mysql通用查詢日志和慢查詢日志分析

    MySQL中的日志包括:錯誤日志、二進制日志、通用查詢日志、慢查詢日志等等。這里主要介紹下比較常用的兩個功能:通用查詢日志和慢查詢日志,需要的朋友可以參考下
    2018-10-10
  • 解決Mysql主從錯誤:could not find first log file name in binary

    解決Mysql主從錯誤:could not find first log&nbs

    這篇文章主要介紹了解決Mysql主從錯誤:could not find first log file name in binary問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-12-12
  • MySQL清理數據并釋放磁盤空間的實現示例

    MySQL清理數據并釋放磁盤空間的實現示例

    本文主要介紹了MySQL如何清理數據并釋放磁盤空間,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-07-07
  • MySQL數據庫基礎學習之JSON函數各類操作詳解

    MySQL數據庫基礎學習之JSON函數各類操作詳解

    很多日常業(yè)務場景都會用到json文件作為數據存儲起來,而mysql5.7以上就提供了存儲json的支撐。這篇文章就為大家整理了MySQL中JSON函數的各類操作,感興趣的可以了解一下
    2023-02-02
  • Mysql數據庫的一些命令

    Mysql數據庫的一些命令

    如果你習慣用 windows 的數據庫,也就是在 圖形界面上操作數據庫的話,那么當你在命令上 操作 mysql 將會感到陌生,其實只要你掌握了一些基本命令,還有經常使用,熟練起來了, 將會相當方便,而且很快速
    2013-11-11
  • 記錄無法安裝mysql-Invalid GPG Key from file:/etc/pki/rpm-gpg/RPM-GPG-KEY-mysql的解決辦法

    記錄無法安裝mysql-Invalid GPG Key from file:/etc/pki/rpm-gpg/RPM-G

    在aliyun上安裝MySQL時由于上次錯誤卸載mysql 導致校驗文件出問題。下面小編給大家分享記錄無法安裝mysql-Invalid GPG Key from file:/etc/pki/rpm-gpg/RPM-GPG-KEY-mysql的解決方法,需要的朋友參考下吧
    2017-01-01
  • MySQL中Join的算法(NLJ、BNL、BKA)詳解

    MySQL中Join的算法(NLJ、BNL、BKA)詳解

    這篇文章主要介紹了MySQL中Join的算法(NLJ、BNL、BKA)詳解,Join是MySQL中最常見的查詢操作之一,用于從多個表中獲取數據并將它們組合在一起,本文將探討這兩種算法的工作原理,以及如何在MySQL中使用它們
    2023-07-07
  • MySql5.7.18字符集配置圖文詳解

    MySql5.7.18字符集配置圖文詳解

    本文通過圖文并茂的形式給大家介紹了mysql5.7.18字符集配置教程,非常不錯,具有參考借鑒價值,需要的朋友參考下吧
    2017-06-06
  • MySQL中字段類型為longtext的值導出后顯示二進制串方式

    MySQL中字段類型為longtext的值導出后顯示二進制串方式

    這篇文章主要介紹了MySQL中字段類型為longtext的值導出后顯示二進制串方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-07-07
  • MySQL數據庫中把int轉化varchar引發(fā)的慢查詢

    MySQL數據庫中把int轉化varchar引發(fā)的慢查詢

    這篇文章主要介紹了MySQL數據庫中把int轉化varchar引發(fā)的慢查詢 的相關資料,非常不錯具有參考借鑒價值,需要的朋友可以參考下
    2016-07-07

最新評論