天天看點

sql string轉為日期_SQL之變身Excel(二)

sql string轉為日期_SQL之變身Excel(二)

字字珠玑的SQL如何言之鑿鑿?

上一篇文章我們大略介紹了在SQL中如何“紳士地“對待日期函數,今天就來講講對于文本資料的處理方式。

世界大同

相信處理過英文文本的朋友都知道大小寫和空格的痛:

很多計算機語言在處理文本時不但要區分字母大小寫,連一個小小的空格都不放過!

而今天,我們就先來看看如何一勞永逸地利用SQL解決檢索時需要分辨大小寫的問題:

upper(大寫)将string(串)轉換為大寫:

UPPER
           

lower(小寫)将string(串)轉換為小寫:

LOWER
           

string即為字元串,通常需要用單/雙/三引号标注。具體使用哪種引号需具體問題具體分析,但很多情況下···

都是看心情【不

突然來介紹個在SQL中測試“新姿勢”的小技巧:

使用SELECT語句。

大小寫SELECT舉例

雖然SELECT通常用來從表中檢索資料,但通過省略FROM子句就可以簡單地通路和處理表達式。來一起看個例子:

SELECT 
           
sql string轉為日期_SQL之變身Excel(二)

當然,這兩個函數隻适用于外文以解決大小寫不統一的問題,對漢字是無效的:

SELECT 
           
sql string轉為日期_SQL之變身Excel(二)

萬宗歸一

不過不必覺得沮喪,SQL的不少文本函數也是支援漢字的【其實是支援string(串)】,比如将幾個字元串拼接在一起:

CONCAT

Concat(拼接),可以拼接串:

CONCAT
           

簡單的可以直接用SELECT語句測試:

SELECT 
           
sql string轉為日期_SQL之變身Excel(二)

但為什麼不來皮一下建個表呢~

建個表
CREATE 
           
sql string轉為日期_SQL之變身Excel(二)
拼接舉例
SELECT 
           
sql string轉為日期_SQL之變身Excel(二)

除去拼接,我們還可以在目前的表格中進行對文本資料的選擇。

LEFT

Left(左)傳回串左邊標明多少的字元串:

LEFT
           
RIGHT

Right(右)傳回串右邊標明多少的字元串:

RIGHT
           
LENGTH

Length(長度)傳回串的位元組長度:

LENGTH
           
LOCATE

Locate(定位)找出串的一個子串。start(開始)是指開始搜尋的位置,不是必填項,預設為

LOCATE
           

其中,substring為隻想要檢索的子串,string是原文本,start是位置(數字),留意空格也是算一個位置的。

這裡還要啰嗦一句,SQL隻會傳回找到的第一個子串的位置,比如我們試圖從“我是誰,我在哪兒,我要幹什麼?“中定位”我“。

SELECT 
           
sql string轉為日期_SQL之變身Excel(二)

但如果我們從第四個位置開始搜尋的話:

SELECT 
           
sql string轉為日期_SQL之變身Excel(二)

就變成第五個了。

LTRIM

Ltrim(左,修剪)去掉串左邊的空格:

LTRIM
           
RTRIM

Rtrim(右,修剪)去掉串右邊的空格:

RTRIM
           
SUBSTRING

Substring(子,串)傳回子串的字元。這裡,length(長度)指的是想要提取出來的位元組長度,不是必填項:

SUBSTRING
           
一鼓作氣式舉例

我們來看一下,根據剛才的表格“健身使人饑餓”,我們來如何:

  • 傳回狀态欄自左向右的前兩位字元;
  • 測算想法欄的各項位元組長度;
  • 傳回想法欄從第二個字元開始的子串。
SELECT 
           
sql string轉為日期_SQL之變身Excel(二)

大家可能會注意到,在計算想法欄的長度時,一個漢字算了三個字元長,遇到這個問題,我們可以用char_length(字元長度)來解決:

字元長度舉例
SELECT 
           
sql string轉為日期_SQL之變身Excel(二)

似是而非

最後再來啰嗦個···似乎又是隻有英文才能用的函數。

SOUNDEX。

它可以将任何文本串轉換為描述其語音表示的字母數字模式。SOUNDEX考慮了類似的發音字元和音節,使得能對串進行發音比較而不是字母比較。雖然SOUNDEX不是SQL概念,但MySQL(就像多數DBMS一樣)都提供對SOUNDEX的支援。

辨音舉例

假如我們有這樣一張表:

sql string轉為日期_SQL之變身Excel(二)

此資料來源自網絡。

再假如我并不确定"Y Lee"的發音,那麼我就可以用似是而非的"Y Lie"來進行搜尋:

SELECT 
           

上述代碼能比對所有發音類似于Y.Lie的聯系名:

sql string轉為日期_SQL之變身Excel(二)

在這個例子中,WHERE子句使用Soundex()函數來轉換cust_contact列值和搜尋串為它們的SOUNDEX值。因為Y.Lee和 Y.Lie發音相似,是以它們的SOUNDEX值比對,是以WHERE子句正确地過濾出了所需的資料。

小結

來總結一下今天所學的文本函數:

  • Left( ) 傳回串左邊的字元
  • Right( ) 傳回串右邊的字元
  • Length( ) 傳回串的長度
  • Locate( ) 找出串的一個子串
  • Lower( ) 将串轉換為小寫
  • Upper( ) 将串轉換為大寫
  • LTrim( ) 去掉串左邊的字元
  • RTrim( ) 去掉串右邊的字元
  • Soundex( ) 傳回串的SOUNDEX值
  • SubString( ) 傳回子串的字元

希望上文可以幫助大家對SQL的文本函數有個初步的了解,如果還是有什麼疑問或是建議的話,歡迎留言詢問~

祝各位學習愉快!

繼續閱讀