数据库-函数

函数在数据库中还是一个很好用的东西,但是它存在不可移植性,所以是否使用函数决定权在你自己手上

文本处理函数


  LEFT()               |               返回字符串左边的字符
  RIGHT()              |               返回字符串右边的字符
  LEN()                |               返回字符串长度
  LOWER()              |               将字符串转换为小写
  UPPER()              |               将字符串转换为大写
  LTRIM()              |               去掉字符串左边的空格
  RTRIM()              |               去掉字符串左边的空格
  SUBSTR()             |               提取字符串组成部分
  SOUNDEX()            |               返回字符串的SOUNDEX值

例如:LEFT()函数,是取字符串的前几个字符,而这个取前几个字符是这么规定的LEFT(str,长度),RIGHT()也是同理。

其中我针对SOUNDEX()函数进行解释,这个函数它匹配所有发音类似于你输入的字段的值输出。 例如我们表格中的数据是Michelle Green,而我们搜索的数据却不是这个,但用到这个函数返回的就还是我们想要的数值。 我们将两个程序对比着来看:

SELECT cust_name, cust_contact
FROM Customers
WHERE cust_contact = 'Michael Green';

这样是没有输出的,因为表格中没有这个字段。

SELECT cust_name, cust_contact
FROM Customers
WHERE SOUNDEX(cust_contact) = SOUNDEX('Michael Green');

而它的输出就是匹配正常的输出。

kids Place | Michelle Green

其中WHERE子句将cust_contact这一列转换成了SOUNDEX值,将后面的结果的值也转换了,也就代表着将他们都转换后我们将他们在匹配,按照发音的相似所以匹配出了我们想要的值。

日期和时间处理函数

DATEPART ()

这个函数中包含两个值,一个是返回的成分,和从中返回成分的日期。当然它只返回日期的一部分。 例如:

SELECT order_num
FROM Orders
WHERE DATEPART(yy,order_date) = 2020;

这个程序返回的就是年份为2020的order_num 的字段。利用函数来查找年份的问题。

数值处理函数


  ABS()             |            返回一个数绝对值
  COS()             |            返回一个角度的余弦值
  SIN()             |            返回一个角度的正弦值
  TAN()             |            返回一个角度的正切值
  EXP()             |            返回一个数的指数值
  PI()              |            返回圆周率的PI值
  SQRT()            |            返回一个数的平方根

聚集函数


  AVG()               |          返回某列的平均值
  COUNT()             |          返回某一列有多少行
  MAX()               |          返回某一列最大值为多少
  MIN()               |          返回某一列最小值为多少
  SUM()               |          返回某一列数之和

在聚集函数中我们可以用到DISTINCT参数和ALL参数,但ALL参数不需要指定,他是默认的,但DISTINCT参数可以将工作量减少,类似于用到求平均值中,就可以完美的将其中其他一样的值缩减,仅剩不一样的值。 DISTINCT函数可以用到count()中但不能用在COUNT(*)中。DISTINCT参数只能使用于列名,不能用于计算字段或者表达式。

组合聚集函数

我们既然有了聚集函数,那就说明我们可以在输出的时候输出多个聚集函数求出来的值。 例如:

SELECT COUNT(*) AS num_items,
       MIN(prod_price) AS price_min,
       MAX(prod_price) AS price_max,
       AVG(prod_price) AS price_avg
FROM Products;

Posts in this Series