在SQL中使用函数

阅读:130

SQL可以用函数处理数据。这些函数,是DBMS已经实现的,我们可以直接使用。

1. 如何进行测试计算

SELECT语句已经为测试、检验函数提供了很好的方式。如果SELECT后没有FROM子句,就变成了简单的访问和处理表达式。

比如我们输出1+1:

mysql> SELECT 1 + 1;
+-------+
| 1 + 1 |
+-------+
|     2 |
+-------+
1 row in set (0.00 sec)

或者对字符串去除空格:

mysql> SELECT TRIM(' Hello SQL! ');
+----------------------+
| TRIM(' Hello SQL! ') |
+----------------------+
| Hello SQL!           |
+----------------------+
1 row in set (0.00 sec)

或者输出当前日期和时间:

mysql> SELECT NOW();
+---------------------+
| NOW()               |
+---------------------+
| 2020-11-02 16:52:17 |
+---------------------+
1 row in set (0.00 sec)

这些都为我们提供方便的测试方式。

2. 函数

以上我们在如何使用测试计算中,用到的TRIM()和NOW()都是函数。这些函数为我们提供很方便的计算能力。

但是,由于函数是各个DBMS自己实现的,所以在不同的DBMS中,函数名称、参数,甚至使用方式都有可能不同,这些差异性给使用者带来了很多麻烦。

注意,在很多软件产品,对于不同的功能是分层的,对数据库访问,我们一般称为数据访问层。那么,假如我们使用了某个特定的数据库的函数,客户要求我们切换不同的数据库软件,这个就会带来很大的麻烦。

3. 文本处理函数

文本处理函数有很多,常见的有:

  • LEFT(),返回字符串左边的字符
  • LENGTH(),返回字符串的长度
  • LOWER(),将字符串转换为小写
  • UPPER(),将字符串转换为大写
  • LTRIM(),去掉字符串左边的空格
  • RIGHT(),返回字符串右边的字符
  • RTRIM(),去掉字符串右边的空格
  • SOUNDEX(),返回SOUNDEX值

 

我们以UPPER函数为例,返回所有商品的名称,并且转换为大写:

mysql> SELECT UPPER(pro_name) FROM t_product;
+-----------------+
| UPPER(pro_name) |
+-----------------+
| APPLE PHONE 12  |
| HUAWEI MATE40   |
| XIAOMI 10       |
| OPPO RENO4      |
| HUAWEI P40      |
| NULL            |
| NULL            |
+-----------------+
7 rows in set (0.00 sec)

 

4. 日期和时间处理函数

日期处理函数,同样是不同的DBMS兼容性较差,这里我们以MySQL为例讲解。

4.1 MySQL常用的日期时间函数

img

 

我们以CURTIME([fsp])为例,fsp为指定小数秒的精度,取值0--6。执行以下SQL:

mysql> SELECT CURTIME(), CURTIME(2), CURTIME(3);
+-----------+-------------+--------------+
| CURTIME() | CURTIME(2)  | CURTIME(3)   |
+-----------+-------------+--------------+
| 15:22:23  | 15:22:23.42 | 15:22:23.420 |
+-----------+-------------+--------------+
1 row in set (0.00 sec)

 

总结:

虽然,SQL函数在格式化、数据处理、过滤中非常好用,但是由于各个DBMS的函数实现不一致,以后数据库扩展成其他DBMS非常麻烦,所以,建议少用SQL函数。


读后有收获,请作者喝杯咖啡

全部评论

发表评论
更多精彩内容,请关注微信公众号