平常我們用oracle主要有兩種字串型別:
1、char始終為固定的長度,如果設定了長度小於char列的值,則oracle會自動用空格填充的。當比較char時,oracle用空格將其填充為等長,再進行比較;
2、varchar2資料型別為可變長度,雖然與varchar資料型別是同義的,但在今後的oracle版本中也許會有變化,所以應該避免使用varchar,優先使用varchar2;
固定長度的字串字段使用char,而其他所有的字串欄位都應使用varchar2。
下面列出部分oracle針對字串操作的一些函式,以下函式可以使用在字串上,也可以使用在列名上:
1、lower(string)將輸入的字串轉換成小寫;
2、upper(string)將輸入的字串轉換成大寫;
3、initcap(string)將輸入的字串單詞的首字母轉換成大寫;
如果不是兩個字母連在一起,則認為是新的單詞,例:a_b a,b a b 類似前面這些情況,都a和b都會轉換成大寫;
4、連線符(||),將兩個字串用||連線起來,除此之外還可以使用concat函式來連線字串;例:select concat(city,country) from table
5、lpad和rpad,填充函式,這是兩個十分相似的函式,使用方式完全一樣。允許在列的左[右]邊填充一組字元;
例:rpad(city,20,'.'),如果ciy的值沒有小於長度20的話,則用'.'在右邊補齊,補到20個,如果是用空格補齊,看上去就是像左對齊一樣;
6、ltrim,rtrim和trim,他們的作用是從字串的左邊、右邊、左右兩邊刪除不需要的字元,預設時刪除空格;
格式:rtrim、ltrim(字串,'刪除字符集') 第乙個引數就是要進行刪除的字元,第二個引數是乙個字符集來的,如果填寫的是'ab',oracle會認為是a和b,然後反覆檢查字串的右端,直到字串中的每個字元都被刪除了,也就是說,直到遇到被刪除字符集中未出現的第乙個字元時,才停止刪除。這樣講可能有點不是很明白,看下面例子
原資料1 aaa.
2 aaa."
3 aa.aab
rtrim(name,'.b"')
1 aaa
2 aaa
3 aa.aa
如果覺得不夠明白的話,自己試多幾次就明白了!我也覺得講得好像不是很清楚一樣!
trim格式有點不一樣,直接看例子吧 select trim('a' from 列名) from tablename 或者trim(leading 'a' from 列名)或者trim(trailing 'a' from 列名) 等價於ltrim和rtrim函式一樣,其實trim函式就只是為了簡化**而以。
7.length該函式很簡單,就是告訴使用者乙個字串有多長,即字串中有多少個字元,該函式本身並不是很好用,但可以做為其它函式的一部分,用於計算**需要多少空格,或者做為orderby 子句的一部分。ps:您不能對乙個使用long資料型別的列使用length之類的函式。
8.substr(string,start [,count])該函式告訴oracle提取出string乙個子集,start開始位置,count提取長度,不指定count時,預設提取到該字串的尾部。
start同時也可以指定為負數,指定為正數的時候是從字串的起始位置開始算(左邊),指定負數時,是從末尾位置算(右邊)。ps:負數不能使用於char資料型別,因為char是固定長度的,所以將使用空格填充他們的值,直到擴充套件到列的全長。
9.instr返回指定的字串所在的位置
instr(string,set[,start [,occurrence ] ] ) 如果指定start,oracle則跳過前面所有字串到該位置開始搜尋,occurence,是強迫instr跳過前幾次與字串匹配,給出下一次匹配的位置,如果occurence指定3,那就是匹配第三次的位置了。 例 instr('abacaaa','a',2,2) 從abacaaa中匹配a這個字串,從2個位置開始匹配,匹配第2次a所在的位置。ps:如果set中不止有乙個字元而是有幾個字元組成的,則instr給出該字符集中的第乙個字元的位置。
10.chr和ascii函式在即席查詢中很少使用。chr把數值轉換成等價的ascii字串 例:select chr(70) from dual
ascii函式執行的結果剛好是相反的,傳遞給他字串,它將轉換成對應的數值(只轉換第乙個字串),如果需要同時轉換多個字串可以使用dump函式dump(string)
ps:instr,replace和substr的功能已經得到擴充套件,可以支援正規表示式。
通過以上函式可以單獨使用或者組合使用,這是乙個簡單的過程,即將簡單的邏輯步驟組合起來完成非常複雜的任務。
strcpy memcpy幾個字串函式的完美版
strcpy函式 char strcpy char strdest,const char strsrc memcpy函式 void memcpy void pvto,void pvform,size t size assert pvto null pvfrom null assert pbto pv...
幾個字串的處理函式
將字串中的小寫字母轉換為大寫 str 要轉換的字串 len 字串長度 void lowertocap u8 str,u8 len 對比字串str1和str2 str1 字串1指標 str2 字串2指標 返回值 0,相等 1,不相等 u8 usmart strcmp u8 str1,u8 str2 r...
寫幾個字串演算法
1 實現strstr函式 函式原型是char strstr char str1,char str2 作用是找出str2字串在str1字串中第一次出現的位置 不包括str2的串結束符 如果找到返回該位置的指標。若找不到,返回null指標。2 實現strcpy函式 char strcpy char de...