日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

MySQL 隐式转换 字符串和整型说明

發布時間:2023/12/9 数据库 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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.當操作符與不同類型的操作數一起使用時,將進行類型轉換以使操作數兼容。

?

總結

以上是生活随笔為你收集整理的MySQL 隐式转换 字符串和整型说明的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。