MySQL 隱式轉換 字符串和整型說明

MySQL 隱式轉換

?

字段類型定義

CREATE TABLE `user` (`id` int(10) NOT NULL AUTO_INCREMENT COMMENT '編號',/* ...... */`name` varchar(10) NOT NULL DEFAULT '' COMMENT '姓名',/* ...... */PRIMARY KEY (`id`),KEY `idx_name` (`name`,`nickname`),/* ...... */
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

?

索引類型注意

字段類型為“字符串”

  • 查詢:數字
mysql> EXPLAIN SELECT * FROM user WHERE name=123;
+----+-------------+-------+------+---------------+------+---------+------+-------+-------------+
| id | select_type | table | type | possible_keys | key  | key_len | ref  | rows  | Extra       |
+----+-------------+-------+------+---------------+------+---------+------+-------+-------------+
|  1 | SIMPLE      | user  | ALL  | idx_name      | NULL | NULL    | NULL | 21541 | Using where |
+----+-------------+-------+------+---------------+------+---------+------+-------+-------------+
1 row in set (0.00 sec)
  • 查詢:字符串
mysql> EXPLAIN SELECT * FROM user WHERE name='123';
+----+-------------+-------+------+---------------+----------+---------+-------+------+-----------------------+
| id | select_type | table | type | possible_keys | key      | key_len | ref   | rows | Extra                 |
+----+-------------+-------+------+---------------+----------+---------+-------+------+-----------------------+
|  1 | SIMPLE      | user  | ref  | idx_name      | idx_name | 32      | const |    1 | Using index condition |
+----+-------------+-------+------+---------------+----------+---------+-------+------+-----------------------+
1 row in set (0.00 sec)

對比結果

當字段類型是varchar等字符類時,如果查詢值是數字類型,索引不生效。

?

字段類型為“數字”

  • 查詢:字符串
mysql> EXPLAIN SELECT * FROM user WHERE id='12';
+----+-------------+-------+-------+---------------+---------+---------+-------+------+-------+
| id | select_type | table | type  | possible_keys | key     | key_len | ref   | rows | Extra |
+----+-------------+-------+-------+---------------+---------+---------+-------+------+-------+
|  1 | SIMPLE      | user  | const | PRIMARY       | PRIMARY | 4       | const |    1 | NULL  |
+----+-------------+-------+-------+---------------+---------+---------+-------+------+-------+
1 row in set (0.00 sec)
  • 查詢:數字
mysql> EXPLAIN SELECT * FROM user WHERE id=12;
+----+-------------+-------+-------+---------------+---------+---------+-------+------+-------+
| id | select_type | table | type  | possible_keys | key     | key_len | ref   | rows | Extra |
+----+-------------+-------+-------+---------------+---------+---------+-------+------+-------+
|  1 | SIMPLE      | user  | const | PRIMARY       | PRIMARY | 4       | const |    1 | NULL  |
+----+-------------+-------+-------+---------------+---------+---------+-------+------+-------+
1 row in set (0.00 sec)

對比結果

字符串會被轉為整數處理,所以對定義為整數類型的字段而言,索引都可以用到;

說明

只有字段類型和查詢的字段值類型對應時,才可用。


?

隱式轉換

mysql>  SELECT 'a'+123, 's'+'234', 5+'ab', 66+'kj', CONCAT(56, 'go');
+---------+-----------+--------+---------+------------------+
| 'a'+123 | 's'+'234' | 5+'ab' | 66+'kj' | CONCAT(56, 'go') |
+---------+-----------+--------+---------+------------------+
|     123 |       234 |      5 |      66 | 56go             |
+---------+-----------+--------+---------+------------------+
1 row in set, 4 warnings (0.00 sec)

說明

MySQL會將數字和字符串的直接相加,
轉為整數型;可以使用CONCAT函數轉為字符串類型;

隱式轉化把字符串轉為了整數類型。但是因為字符串是非數字型的,所以就會被轉換為0


?

MySQL文檔說明

When an operator is used with operands of different types, type conversion occurs to make the operands compatible.當操作符與不同類型的操作數一起使用時,將進行類型轉換以使操作數兼容。

?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/275989.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/275989.shtml
英文地址,請注明出處:http://en.pswp.cn/news/275989.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

安裝vs2017出現閃退現象_Adobe Reader 閃退

在我們的日常辦公、學習中經常會涉及到 PDF 文件,免不了需要處理 PDF 文件如:PDF轉Word、PDF合并、導出成圖片、PDF解密、PDF轉PPT、PDF加水印、PDF簽名等等。PDF是與平臺無關的文件格式,無論在哪種打印機上都可保證精確的顏色和準確的打印效…

從Vue.js源碼中我學到的幾個實用函數

大家好,我是若川。歡迎加我微信 ruochuan12,長期交流學習。今天推薦Vuejs源碼中幾個實用的方法。如果想看Vuejs源碼,不知道如何下手,一般推薦配置Sourcemap,針對單個問題調試來看,如何調試Vuejs源碼&#x…

real類型_如何使用REAL方法對您的Web內容進行現實檢查

real類型Web內容審核模板 (Web content audit template) I recently completed a website audit project for a nonprofit organization through CatchAFire.org. As part of the website audit, I audited every key page’s content, looking for areas of opportunity.我最近…

青海行--(7月26日)翻越祁連山

嘉峪關是最值得一寫的,雖然也是著名的旅游城嘉峪關景點是國家AAAAA級景區,但與敦煌完全不一樣,沒有人山人海的游客,門票也不貴,才10&a…

TikTok真題第1天 | 666.路徑和IV、 207.課程表、210.課程表||

666.路徑和IV 題目鏈接:666.路徑和IV 解法: 參考這篇題解:【LeetCode - 666】路徑和 IV_力扣666路徑總和4-CSDN博客 關鍵點在于: (1)使用map來存node:key 為整數的前兩位,value…

導出Excel

2019獨角獸企業重金招聘Python工程師標準>>> 思路: 1, 引入Excel類庫; 2, 創建一個模板; 3, 將數據填充進去; 4, 生成文件; 下面是一個簡單的示例 $phpExcelObj new PHPExcel(); $titleMap self::TITLE_MAP; //設置表頭 $i 0; foreach ($titleMap as $key > $…

CentOS系統更換yum源(repomd.xml not found解決方案)

CentOS系統更換yum源 問題 當初瞎鼓搗服務器,更換yum源為aliyun的,奈何阿里的源最近全部打不開,導致yum安裝不了,一直報錯: http://mirrors.aliyun.com/centos/6/os/x86_64/repodata/repomd.xml: [Errno 14] PYCURL E…

在類中用class時數據是共有還是私有_jvm學習筆記之class文件的加載、初始化

編寫的java文件在要真正運行時,會首先被編譯成 “.class"結尾的二進制文件,然后被虛擬機加載。那么在虛擬機中一個class文件要成為java實例,需要經歷好幾個步驟:1、裝載:裝載階段由三個基本動作完成,要…

所有前端都要看的2D游戲化互動入門基礎知識

背景現在越來越多的公司和APP開始使用游戲化的方式去做產品了,所謂游戲化,是指在非游戲環境中將游戲的思維和游戲的機制進行整合運用,以引導用戶互動和使用的方法。支付寶里面的螞蟻莊園、螞蟻森林,通過游戲和公益的結合實現用戶的…

江蘇一動物園現“旋轉活馬” 園方:創意來自馬術訓練

中新網南通1月31日電 (記者唐娟)“旋轉馬設備采用同時容納六匹馬的遛馬器組裝而成,對馬匹沒有任何傷害,初衷是希望給小朋友一種全新體驗,這才有了這個創意項目。”1月31日,針對活馬版“旋轉木馬”引發的熱議,江蘇南通森…

Byte數組轉換成string 的方法積累

.net的加密算法,返回的都是byte[] 類型,在存貯起來讓人非常頭疼,最簡單的方法就是把byte[]轉換成string來存貯,當然如果數據量大的話,另當別論。 所以我就把byte[]轉換成string的方法做一個簡單的積累與分析。目前有3種…

加快信息化建設對地方發展的_加快設計師職業發展的9種方法

加快信息化建設對地方發展的重點 (Top highlight)Over the past few months, I have had an increase in conversations with design students from various institutions, as well as early, to senior-level designers, researchers, & product managers from various co…

Docker:Nginx-Redis-Mysql-PHP 部署

Docker:Nginx-Redis-Mysql-PHP 部署 網絡橋接 Docker容器之間默認網絡隔離,需要使用橋接網絡進行互通 創建網絡 docker network create net-local docker network ls NETWORK ID NAME DRIVER SCOPE da9c8fc3dc80 bridge bridge local 78641…

epoll監聽文件_介紹一下 Android Handler 中的 epoll 機制?

介紹一下 Android Handler 中的 epoll 機制?目錄:IO 多路復用select、poll、epoll 對比epoll APIepoll 使用示例Handler 中的 epoll 源碼分析IO 多路復用IO 多路復用是一種同步 IO 模型,實現一個線程可以監視多個文件句柄。一旦某個文件句柄就…

前端工程師的一大神器——puppeteer

大家好,我是若川。歡迎加我微信 ruochuan12,長期交流學習。今天推薦神器puppeteer,我猜有挺多人不知道。文章不長,看完有空也可以試玩。我18年也寫過一篇puppeteer爬取生成pdf的文章,時間真快。前端使用puppeteer 爬蟲…

selenium界面元素定位

一、 Selenium界面元素定位 本文元素定位以das2為例 #導入包 from selenium import webdriver #打開火狐驅動 driverwebdriver.Firefox() #訪問網址 driver.get("http://192.168.3.217:8080/das/seatlogin.jsp ") 進行web頁面自動化測試,對頁面上…

vue.js ui_UI / UX開發:考慮Vue.js

vue.js uiBecause sometimes we have to add logic to our concepts, and Vue makes it a whole lot easier.因為有時我們必須在概念中添加邏輯,而Vue使其變得更加容易。 FULL DISCLOSURE: THIS IS NOT A COMPLETE JAVASCRIPT OR VUE COURSE. There’s no way I co…

Silverlight學習筆記十七BingMap(三)之地圖的地區標識

如果我們需要在Bing Maps中加入一個小圖釘標記&#xff0c;該如何實現了&#xff1f; Bing Maps控件已經為我們提供了這個功能&#xff0c;在Microsoft.Maps.MapControl名稱空間下提供了實現圖釘應用的圖釘層Pushpin類用該類來實現普通標識 在Xaml中添加<map:Pushpin Locati…

win10查看pcie設備_壹拓網科技解密WIN10系統使用向日葵開機棒遠程開機需要設置幾個地方...

向日葵開機棒&#xff0c;是一款非常好用的遠程智能遠程開機硬件&#xff0c;它一頭接網線&#xff0c;另外一頭和被開電腦接在同一個路由器下&#xff0c;不需要和被開電腦或者設備直接連接&#xff0c;當然&#xff0c;被開電腦需要有線聯網&#xff0c;暫時不支持使用無線方…

如何成為公司獨當一面的工程師

大家好&#xff0c;我是若川。歡迎加我微信 ruochuan12&#xff0c;長期交流學習。今天推薦黃老師的這篇文章&#xff0c;你可能看到過了&#xff0c;但值得再看一遍。之前常有小伙伴問&#xff0c;大多情況下我都會分享這篇文章。點擊下方卡片關注我、加個星標&#xff0c;或者…