SQL (七)數據處理函數


在這裏插入圖片描述

首先了解SQL函數的問題:不可移植

在這裏插入圖片描述在這裏插入圖片描述
真是奇葩的情況。。這就是商業的百花齊放的負面作用了。如果只有開源軟件就不會這樣了,大家只會儘量保持一致保持兼容。

由於各個DBMS對各種功能模塊的函數實現不一樣,所以如果用函數,換一個DBMS就要重寫用函數部分的代碼。不用函數,只用基本語句實現起來又複雜。

大多數SQL實現支持的函數類型

在這裏插入圖片描述

文本處理函數

之前的trim,rtrim, ltrim函數都是文本處理函數
在這裏插入圖片描述

這個SOUNDEX好玄幻的樣子,這個算法太牛逼了,有人工智能內味兒

示例1:upper函數,轉換爲大寫

select vend_name, upper(vend_name) as vend_upcase
from vendors
order by vend_name;

在這裏插入圖片描述
注意計算字段是在select語句中的

示例2:soundex函數

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');

在這裏插入圖片描述

這樣子名字輸錯一點點也沒關係

日期和時間函數:可移植性最差

在這裏插入圖片描述
先不管其他DBMS了,只管mysql
在這裏插入圖片描述

select order_num,order_date
from orders
where year(order_date) = 2012; 

在這裏插入圖片描述
在這裏插入圖片描述

數值函數:最一致統一的函數,但使用沒有日期函數和文本函數頻繁

在這裏插入圖片描述

系統函數

總結

  • 牛逼的soundex文本處理算法,可以檢測發音相似的文本
  • year函數從日期中提取年
  • 日期和時間函數的移植性最差
  • 由於很多函數在不同DBMS的實現不同,所以到時候需要自己看相應DBMS的官方文檔,並要有良好的註釋習慣,不要給後人挖坑,或者被後人罵
  • 函數在格式化,對數據進行處理和過濾上很有用
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章