MySQL 字面量

字面常量是在编程语言中表示固定值的直接值,是程序中的硬代码。它们是在程序中直接出现的常量值,而不是通过变量或表达式计算得到的。

字面常量可以是不同的数据类型,例如整数、浮点数、布尔值、字符串等。

在 MySQL 中,通常你可以将字面常量用于存储过程、函数的参数、SQL 语句中赋值语句、条件比较,如 IF。下面是 MySQL 中三大基本字面量类型:

数字字面常量

数字字面量适用于表达数字并可以被定义为十进制数字(300, 30.45 等),十六进制数或者科学计数法表示的数。

十六进制值使用的是传统的表示方法,在它的前面加上 0x。因此 0xA 表示十六进制中的 A,也就是十进制中的 10。

例如:

-- 整数字面常量
mysql> select 42, 0, -10;
+----+---+-----+
| 42 | 0 | -10 |
+----+---+-----+
| 42 | 0 | -10 |
+----+---+-----+
1 row in set (0.05 sec)

-- 浮点数字面常量
mysql> select 3.14, 2.0, -1.5;
+------+-----+------+
| 3.14 | 2.0 | -1.5 |
+------+-----+------+
| 3.14 | 2.0 | -1.5 |
+------+-----+------+
1 row in set (0.04 sec)

什么是科学计数法?

科学计数法(Scientific notation),也称为标准形式或指数表示法,是一种用于表示非常大或非常小的数字的方法。它的基本形式是将一个数字表示为一个有限数量的数字乘以 10 的幂。

科学计数法的一般形式如下:

a × 10^b

其中,a 是一个介于 1 到 10 之间的数字,称为尾数(mantissa),b 是一个整数,称为指数(exponent)。指数表示了尾数需要乘以 10 的次数。

例如,光速的近似值是 299,792,458米/秒,可以使用科学计数法表示为:

2.99792458 × 10^8 m/s

在科学计数法中,指数可以是正数、负数或零,用来表示数字的大小和精度。当指数为正数时,表示一个较大的数字;当指数为负数时,表示一个较小的数字;当指数为零时,表示尾数本身。

科学计数法在科学、工程和计算领域经常使用,特别是当处理非常大或非常小的数字时,可以简化表示和计算,并提高可读性和精度。

日期字面常量

一个日期字面常量是一个类似于 “YYYY-MM-DD” 这样的字符串,或者在 DATATIME 中以 “YYYY-MM-DD HH24:MI:SS” 这样的格式表示。

因此, “1999-12-31 23:59:59” 表示上个世纪的最后一秒钟。

例如:

mysql> select '1999-12-31 23:59:59', year('1999-12-31 23:59:59');
+---------------------+-----------------------------+
| 1999-12-31 23:59:59 | year('1999-12-31 23:59:59') |
+---------------------+-----------------------------+
| 1999-12-31 23:59:59 |                        1999 |
+---------------------+-----------------------------+
1 row in set (0.04 sec)

上面例子中,通过 year() 函数获取日期的年份。

字符字面常量

字符常量是任何被简单的包含在单引号中的值,如:'A'。

如果你要在单引号中表示另一对单引号,那么你可以用两个双引号或者加上前缀的反斜杠(\')进行转意来表示他们。你也可以用双引号来闭合一个字符串,并且你可以使用转意序列字符(\t 表示 tab,\n 表示换行,\\表示反斜杠,等等)。

例如:

mysql> select 'hello world' from dual;
+-------------+
| hello world |
+-------------+
| hello world |
+-------------+
1 row in set (0.04 sec)

mysql> select '\'hello world\'' from dual;
+---------------+
| 'hello world' |
+---------------+
| 'hello world' |
+---------------+
1 row in set (0.02 sec)

mysql> select '"hello world"' from dual;
+---------------+
| "hello world" |
+---------------+
| "hello world" |
+---------------+
1 row in set (0.02 sec)

mysql> select '"hello \t world"' from dual;
+----------------+
| "hello world" |
+----------------+
| "hello world" |
+----------------+
1 row in set (0.04 sec)
说说我的看法
全部评论(
没有评论
关于
本网站专注于 Java、数据库(MySQL、Oracle)、Linux、软件架构及大数据等多领域技术知识分享。涵盖丰富的原创与精选技术文章,助力技术传播与交流。无论是技术新手渴望入门,还是资深开发者寻求进阶,这里都能为您提供深度见解与实用经验,让复杂编码变得轻松易懂,携手共赴技术提升新高度。如有侵权,请来信告知:hxstrive@outlook.com
公众号