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

Mysql隱式類型轉(zhuǎn)換方式

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

一、實(shí)例操作

如下圖user表結(jié)構(gòu)

查詢語(yǔ)句1

  • 執(zhí)行結(jié)果:

查詢語(yǔ)句2

  • 執(zhí)行結(jié)果:

查詢語(yǔ)句3

  • 執(zhí)行結(jié)果:

查詢語(yǔ)句4

  • 執(zhí)行結(jié)果:

  • 結(jié)果分析:

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

這是為什么呢?

二、mysql 隱式類型轉(zhuǎn)換

上述案例其真實(shí)的原因時(shí)mysql的隱式類型轉(zhuǎn)換,那什么是隱式類型轉(zhuǎn)換呢?

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

官方文檔

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

通過(guò)隱式類型轉(zhuǎn)換可以得出上述示例的結(jié)果:當(dāng)查詢中有數(shù)字時(shí)那么會(huì)將字符串轉(zhuǎn)化成數(shù)字進(jìn)行比較。

所以當(dāng)你的列為字符串時(shí)那么需要將列中字符串進(jìn)行類型格式轉(zhuǎn)換而進(jìn)行字符格式轉(zhuǎn)換之后則與索引不一致;

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

2. 隱式類型轉(zhuǎn)換實(shí)例

3. 避免隱式類型轉(zhuǎn)換

可以使用內(nèi)置函數(shù)對(duì)類型強(qiáng)制性轉(zhuǎn)換

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

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

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

總結(jié)

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

  • 解決Mysql主從錯(cuò)誤:could not find first log file name in binary

    解決Mysql主從錯(cuò)誤:could not find first log&nbs

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

    MySQL清理數(shù)據(jù)并釋放磁盤(pán)空間的實(shí)現(xiàn)示例

    本文主要介紹了MySQL如何清理數(shù)據(jù)并釋放磁盤(pán)空間,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-07-07
  • MySQL數(shù)據(jù)庫(kù)基礎(chǔ)學(xué)習(xí)之JSON函數(shù)各類操作詳解

    MySQL數(shù)據(jù)庫(kù)基礎(chǔ)學(xué)習(xí)之JSON函數(shù)各類操作詳解

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

    Mysql數(shù)據(jù)庫(kù)的一些命令

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

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

    在aliyun上安裝MySQL時(shí)由于上次錯(cuò)誤卸載mysql 導(dǎo)致校驗(yàn)文件出問(wèn)題。下面小編給大家分享記錄無(wú)法安裝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中最常見(jiàn)的查詢操作之一,用于從多個(gè)表中獲取數(shù)據(jù)并將它們組合在一起,本文將探討這兩種算法的工作原理,以及如何在MySQL中使用它們
    2023-07-07
  • MySql5.7.18字符集配置圖文詳解

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

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

    MySQL中字段類型為longtext的值導(dǎo)出后顯示二進(jìn)制串方式

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

    MySQL數(shù)據(jù)庫(kù)中把int轉(zhuǎn)化varchar引發(fā)的慢查詢

    這篇文章主要介紹了MySQL數(shù)據(jù)庫(kù)中把int轉(zhuǎn)化varchar引發(fā)的慢查詢 的相關(guān)資料,非常不錯(cuò)具有參考借鑒價(jià)值,需要的朋友可以參考下
    2016-07-07
  • 最新評(píng)論