這篇文章主要介紹了sql server 常用函數使用方法小結,需要的朋友可以參考下
之前就想要把一些 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