字符串
字符串的长度
获取字符串长度的两个函数
| 函数 | 特点 | 使用场景 |
|---|---|---|
| length | 把1个汉字当成2个字节来计算 | 计算字符串在计算机中的存储字节长度 |
| char_length | 按照字符的方式来计算,1个汉字算 | 计算肉眼读取的字符个数 |
select length("我"); // 2select char_length("我") //1select length("f我"); //3select char_length("f我"); //2
常见字符类型
varchar, char, text 是常见的字符串类型;
char_length('xxxx')
拼接字符串
concat('1','2','3')
浮点数
| 类型 | 特点 |
|---|---|
| float | 精度不高,当数据是整数则以整数存储,小数则以小数存储。如默认值为0.00存储为0 |
| decimal | 精度有要求,可以指定小数位。decimal(length,precision).length 指总长度, precision指的是小数部分长度 |
decimal
- decimal 在 mysql 内部是使用字符串的形式来存储的,所以能保存精度。
- 适用于存储 价格、金额对精度要求不高,但对准确度要求非常高的字段。
- 使用的工具 dbeaver, 显示 decimal 时如果小数部分为零,则默认不显示。在 cmd 终端显示正常,怪不得有相当一部分人直接使用终端,不使用编辑工具。
- decimal 和 numeric 是同一类型
整数型
使用整数型应该注意所占空间
| 类型 | 空间 |
|---|---|
| tinyint | 1字节 |
| smallint | 2字节 |
| mediumint | 3字节 |
| int | 4字节 |
| bigint | 8字节 |
数值常用函数
取绝对值
-
四舍五入
-
字符串与数字类型转化
-- 自动会发生类型转化 '2.3' + 0json 类型
参考:https://mp.weixin.qq.com/s/QqnC502jnuGcKnpgD0OKaw
插入数据
创建表:
create table test1(id int,info json);插入数据:
insert into test1 values (1,'{"name":"yeyz","age":26}'),(2,'{"name":"zhangsan","age":30}'),(3,'{"name":"lisi","age":35}');嵌套查询
json_extract表示使用嵌套查询;- $符号代表的是 json 对象;
使用
$.field的形式进行嵌套查询select * from test1 where json_extract(info,"$.age")>=30;json_valid 是否为 json
1 返回是;
- 0 返回否
select json_valid(2); // 0json_keys
json_keys传回执行json字段最上一层的key值
结果:select json_keys('{"name":"yeyz","score":100}');["name", "score"]json_contains_path 成员检查
mysql> set @j='{"a":1,"b":2,"c":{"d":4}}';
Query OK, 0 rows affected (0.00 sec)
#one的意思是只要包含一个成员,就返回1
mysql> select json_contains_path(@j,'one','$.a','$.e');
+------------------------------------------+
| json_contains_path(@j,'one','$.a','$.e') |
+------------------------------------------+
| 1 |
+------------------------------------------+
1 row in set (0.00 sec)
#all的意思是所有的成员都包含,才返回1
查看所有值 *
{
"a":1,
"b":2,
"c":
{
"d":4
}
"e":
{
"d":
{
"ddd":
"5"
}
}
}
mysql> set @j='{"a":1,"b":2,"c":{"d":4},"e":{"d":{"ddd":"5"}}}';
Query OK, 0 rows affected (0.00 sec)
#所有成员
mysql> select json_extract(@j,'$.*');
+---------------------------------------+
| json_extract(@j,'$.*') |
+---------------------------------------+
| [1, 2, {"d": 4}, {"d": {"ddd": "5"}}] |
+---------------------------------------+
1 row in set (0.00 sec)
布尔值
在 Mysql 中布尔值和 tinyint 是同一个含义:
- 1 代表 true;
- 0 代表 false;
select true,FALSE;

