之前就想要把一些 SQL 的常用函數記錄下來,不過一直沒有實行。。。嘿嘿。。。 直到今天用到substring()這個函數,C# 裡面這個方法起始值是 0,而 SQL 裡面起始值是 1。傻傻分不清楚。。。 這篇博客作為記錄 SQL 的函數的使用方法,想到哪裡用到哪裡就寫到哪裡。。。 SubStrin ...
之前就想要把一些 SQL 的常用函數記錄下來,不過一直沒有實行。。。嘿嘿。。。
直到今天用到substring()這個函數,C# 裡面這個方法起始值是 0,而 SQL 裡面起始值是 1。傻傻分不清楚。。。
這篇博客作為記錄 SQL 的函數的使用方法,想到哪裡用到哪裡就寫到哪裡。。。
SubString():用於截取指定字元串的方法。該方法有三個參數:
參數1:用於指定要操作的字元串。
參數2:用於指定要截取的字元串的起始位置,起始值為 1 。
參數3:用於指定要截取的長度。
select substring('abcdef',1,3) -- 返回 abc select substring('123456321',0,2) -- 返回 1,即第一位,最好不要這樣做
Left():用於返回指定字元串中指定長度的左側部分。該方法有兩個參數:
參數1:用於指定要操作的字元串。
參數2:用於指定要返回的子字元串的長度。
select LEFT('abc123',3) -- 返回 abc select LEFT('左側部分右側部分',4) -- 返回 左側部分
Right():用於返回指定字元串中指定長度的右側部分。該方法有兩個參數:
參數1:用於指定要操作的字元串。
參數2:用於指定要返回的子字元串的長度。
select RIGHT('abc123',3) -- 返回 123 select RIGHT('左側部分右側部分',4) -- 返回 右側部分
CharIndex():用於返回指定字元串中指定子字元串出現的起始位置。如果未找到就返回 0。該方法有兩個參數:
參數1:用於指定要進行查找的字元串。
參數2:用於指定用作檢索的字元串。
select charindex('a','123a123') -- 返回 4 select charindex('abc','123a123') -- 返回 0 select charindex('abc','123abc123') -- 返回 4
Stuff():用於刪除指定長度的字元,併在刪除的位置插入新的字元/值。該方法有四個參數:
參數1:用於指定要操作的字元串。
參數2:用於指定要刪除字元的起始位置。
參數3:用於指定要刪除字元的長度。
參數4:用於指定在刪除的位置插入的新的字元串/值。
select stuff('123abc456',4,3,'ABC') -- 返回 123ABC456 select stuff('123abc456',1,3,'') -- 返回 abc456,用空字元串替代
Len():用於返回指定文本的值的長度。前導空格計算在內,尾隨空格不計算在內。該方法有一個參數:
參數1:用於指定要操作的文本或字元串。
select len('123') -- 返回 3 select len('字元串') -- 返回 3
Difference():用於返回一個整數值,指示兩個字元表達式的 SOUNDEX 值之間的差異。(即兩個字元串的相似度)那麼什麼是 SOUNDEX 值呢?先記著,下麵輪到它了。
返回的值從 0 到 4 不等:0 表示幾乎不同或完全不同,4 表示幾乎相同或完全相同。該方法有兩個參數:
參數1:用於指定要進行比對的第一個字元串 SOUNDEX 值 。
參數2:用於指定要進行比對的第二個字元串 SOUNDEX 值。
select difference('action','demo') -- 返回 2 select difference('123456','整數') -- 返回 4
Soundex():用於返回指定字元串的 SOUNDEX 值。SOUNDEX是一種語音演算法,利用英文字的讀音計算近似值,值由四個字元構成,第一個字元為英文字母,後三個為數字。在拼音文字中有時會有會念但不能拼出正確字的情形,可用 Soundex 做類似模糊匹配的效果。這裡的模糊匹配跟 LIKE 不同。
演算法簡要說明:
-- 將英文字按以下規則替換(不使用第一個字元進行匹配,並且不使用對應值為 0 的英文字元的值) a e h i o u w y -> 0 b f p v -> 1 c g j k q s x z -> 2 d t -> 3 l -> 4 m n -> 5 r -> 6
如果字元串中存在擁有相同對應數字的2個或以上的字母在一起(例如 j 和 k),則刪除其他的,只保留1個。去除對應值為 0 的字元,只返回前4個位元組,不夠用 0 填充。
select soundex('string') -- 返回 S215 select soundex('str') -- 返回 S210
select soundex('123') -- 返回 0000 select soundex('字元串') -- 返回 0000
PS:除英文字元以外的字元都將返回 0000,所以上面的方法 Difference() 的第二個示例會返回4(表示完全相同)。
Lower():用於返回指定英文字元串的小寫形式的字元串。如果不為英文字元串,則返回原值。該方法有一個參數:
參數1:用於指定要轉換為小寫形式的字元串。
select lower('ABC') -- 返回 abc select lower('123') -- 返回 123
Upper():用於返回指定英文字元串的大寫形式的字元串。如果不為英文字元串,則返回原值。該方法有一個參數:
參數1:用於指定要轉換為大寫形式的字元串。
select upper('abc') -- 返回 ABC select upper('123') -- 返回 123
Ltrim():用於返回刪除前導空格之後的字元串。該方法有一個參數:
參數1:用於指定要進行刪除前導空格操作的字元串。
select ltrim(' 123') -- 返回 123 select ltrim(' 好多空格') -- 返回 好多空格 select len(' 123') -- 返回 11 select len(ltrim(' 123')) -- 返回 3
Rtrim():用於返回截斷尾隨空格之後的字元串。該方法有一個參數:
參數1:用於指定要進行截斷尾隨空格操作的字元串。
select rtrim('123 ') -- 返回 123 select len(rtrim('123 ')) -- 返回 3
Replace():用第三個表達式替換第一個字元串表達式中出現的所有第二個給定字元串表達式。該方法有三個參數:
參數1:用於指定要操作的字元串,即被匹配的字元串。
參數2:用於指定要進行匹配的字元串。
參數3:用於指定用作替換存在的匹配項的字元串。
--把 abc 替換為 xxx select replace('123abc456','abc','xxx') -- 返回 123xxx456 -- 用空字元串替換匹配項 select replace('123abc456','abc','') -- 返回 123456