SQL點滴33—SQL中的字串操作

來源:互聯網
上載者:User

計算字串長度
len()用來計算字串的長度

select sname ,len(sname) from student

字串轉換為大、小寫
lower() 用來將一個字串轉換為小寫,upper() 用來將一個字串轉換為大寫

select lower('I AM A STUDENT !')select upper('i am a student !')

截去字串左、右側空格                                              
ltrim() 用來將一個字串左側的空格去掉 ,rtrim()用來將一個字串右側的空格去掉

declare @str varchar(100)set @str=' 我的左側有空格!'select @str as 初始字元, len(@str) as 初始長度,ltrim(@str) as 現有字元,len(ltrim(@str)) as 現有長度

返回由重複的空格組成的字串

space(integer_expression)    integer_expression 指示空格個數的正整數。如果 integer_expression 為負,則返回Null 字元串。select 'A'+ space(2)+'B'

取子字串

substring(string,start_position,length) 可以從任意位置取任意長度的子字串,left(string,length)  從左側開始取子字串right(string,length)從右側開始取子字串select substring('HelloWorld!',6,6)select left('HelloWorld!' ,5)select right('HelloWorld!' ,6)

字串替換

replace(string,要被替換的字串,替換的字串)select replace('HelloWorld!','o','e') 結果為:HelleWerld!

返回字串值的逆向值

reverse(string_expression)select reverse('abc') 結果為:cba

刪除指定長度的字元,並在指定的起點處插入另一組字元

stuff(character_expression , start , length ,character_expression)start 一個整數值,指定刪除和插入的開始位置。length 一個整數,指定要刪除的字元數。select stuff('abcdefg',1,6,'Hello ') 結果為:Hello g

以指定的次數重複字串值

replicate(string_expression ,integer_expression)select replicate('abc',4) 結果為:abcabcabcabc

返回字串中指定運算式的開始位置

charindex(expression1 ,expression2  , start_location )或charindex(expression1 ,expression2 )expression1在expression2 中的開始位置select charindex('H','elloHWorld') 結果為:5

返回指定運算式中模式第一次出現的開始位置,返回指定運算式中某模式第一次出現的起始位置;

patindex('%pattern%',expression)

如果在全部有效文本和字元資料類型中沒有找到該模式,則返回零。

select patindex('%Hello%','WorldHello') 結果為:6

返回輸入運算式的第一個字元的整數值

unicode( 'ncharacter_expression' )    ' ncharacter_expression ' 為 nchar 或 nvarchar 運算式。select unicode('a') 結果為:97select unicode('abc') 結果為:97

返回由數字資料轉換來的字元資料
str(float_expression , length ,decimal )
float_expression 帶小數點的近似數字 (float) 資料類型的運算式。
length               總長度。它包括小數點、符號、數字以及空格。預設值為 10。
decimal             小數點右邊的小數位元。decimal 必須小於等於 16。如果 decimal 大於 16,則將結果截斷為小數點右邊的 16 位。

select str(123.436,2), len(str(123.436,2)) //當運算式超出指定長度時,字串為指定長度返回 **select str(123.436), len(str(123.436)),str(123.436,6), len(str(123.436,6)),str(123.436,6,1), len(str(123.436,6,1)) //由六個數字和一個小數點組成的運算式轉換為有六個位置的字串。數位小數部分舍入為一個小數位。select str(1234.436), len(str(1234.436)),str(1234.436,6), len(str(1234.436,6)),str(1234.436,6,1),len(str(1234.436,6,1))

得到字元的ASCII碼
ascii()用來得到一個字元的ASCII碼,它有且只有一個參數,如果參數為字串,那麼取第一個字元的ASCII碼

select ascii('H')select ascii('HelloWorld!')

得到一個與ASCII碼數字對應的字元

Char(integer_expression)  integer_expression 介於 0 和 255 之間的整數。如果該整數運算式不在此範圍內,將返回 NULL 值。select Char(72)

返回返回具有指定的整數代碼的 Unicode 字元

nchar(integer_expression)  integer_expression 介於 0 與 65535 之間的正整數。如果指定了超出此範圍的值,將返回 NULL。select nchar(1000)

返回帶有分隔字元的 Unicode 字串,分隔字元的加入可使輸入的字串成為有效 SQL Server 分隔識別碼。

quotename('character_string')  character_string 不得超過 128 個字元。超過 128 個字元的輸入將返回 NULL。select quotename('abc[aa]def')結果為:[abc[]]def]  請注意,字串 abc[]def 中的右方括弧有兩個,用於指示轉義符。select QUOTENAME('abcdef','''') --分隔字元是兩個單引號-- 'abcdef'select QUOTENAME('abcdef') --分隔字元是]-- [abcdef]select QUOTENAME('abcdef','{}') --分隔字元是}-- {abcdef}

發音匹配度
有時候我們並不知道一個人姓名的拼字,但是我們知道他的發音,這時我們可以進行發音的匹配度測試。
soundex()用於計算一個字串的發音特徵性,這個特徵值為一個四個字元的字串,特徵性的第一個字元總是初始字串中的第一個字元,而後是一個三位元的數值。
select sname ,soundex(sname) from student
發音特徵值的含義非常複雜,如果要根據兩個發音特徵值來分析兩個字串的發音相似性的話非常麻煩。
可以使用difference()來簡化兩個字串的發音相似性比較,它可以計算兩個字串的發音特徵值,並且比較它們,
然後返回一個0~4之間的值來反映兩個字串的發音相似性,這個值越大則表示兩個字串的發音相似性越大。
select sname,soundex(sname), difference(sname,'Herry') from stu

 

 

 

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.