微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

oralce字符串函数

官网链接【由于是国外的网址,网速有点慢,所以这边贴出来了,方便查看】

Oracle/PLsql String Functions
ASCII
Get TheASCIIValue Of A Character ASCII(chVARCHAR2CHaraCTER SET ANY_CS)RETURNPLS_INTEGER;
SELECTASCII('A')FROMDUAL;
SELECTASCII('Z')FROMDUAL;
SELECTASCII('a')FROMDUAL;
SELECTASCII('z')FROMDUAL;
SELECTASCII(' ')FROMDUAL;
CASE Related Functions
Upper Case UPPER(chVARCHAR2CHaraCTER SET ANY_CS)
RETURNVARCHAR2CHaraCTER SET ch%CHARSET;
SELECTUPPER('Dan Morgan')FROMDUAL;
Lower Case LOWER(chVARCHAR2CHaraCTER SET ANY_CS)
RETURNVARCHAR2CHaraCTER SET ch%CHARSET;
SELECTLOWER('Dan Morgan')FROMDUAL;
Initial Letter Upper Case INITCAP(chVARCHAR2CHaraCTER SET ANY_CS)
RETURNVARCHAR2CHaraCTER SET ch%CHARSET;
SELECTINITCAP('DAN MORGAN')FROMDUAL;
NLS Upper Case NLS_UPPER(<string_or_column>)
SELECTNLS_UPPER('Dan Morgan','NLS_SORT= XDanish')
FROMDUAL;
NLS Lower Case NLS_LOWER(<string_or_column>)
SELECTNLS_LOWER('Dan Morgan','NLS_SORT= Xfrench')
FROMDUAL;
NLS Initial Letter Upper Case NLS_INITCAP(<string_or_column>)
SELECTNLS_INITCAP('DAN MORGAN','NLS_SORT= XGerman')
FROMDUAL;
CHR
Character CHR(nPLS_INTEGER)RETURNVARCHAR2;
SELECT(CHR(68) ||CHR(65) ||CHR(78))FROMDUAL;

SELECT(CHR(68) ||CHR(97) ||CHR(110))FROMDUAL;
COALESCE

Returns the first non-null occurrence
COALESCE(<value>,<value>,...)
CREATETABLEtest (
col1VARCHAR2(1),
col2VARCHAR2(1),
col3VARCHAR2(1));

INSERTINTOtestVALUES(NULL,'B','C');
INSERTINTOtestVALUES('A',NULL,'C');
INSERTINTOtestVALUES(NULL,'C');

SELECTCOALESCE(col1,col2,col3)FROMtest;
CONCAT
Concatenate

Overload 1

standard.CONCAT(
lefVARCHAR2CHaraCTER SET ANY_CS,
rightVARCHAR2CHaraCTER SET ANY_CS)
RETURNVARCHAR2CHaraCTER SET LEFT%CHARSET;
SELECTCONCAT('Dan ','Morgan')FROMDUAL;

Concatenate

Overload 2
CONCAT(left INCLOB,right INCLOB)RETURNCLOB
set serveroutput on

DECLARE
c1CLOB:=TO_CLOB('Dan ');
c2CLOB:=TO_CLOB('Morgan');
c3CLOB;
BEGIN
SELECTCONCAT(c1,c2)
INTOc3
FROMDUAL;

dbms_output.put_line(c3);
END;
/
CONVERT
Converts From One Character Set To Another CONVERT(<character>,<destination_character_set>,
<source_character_set>)
SELECTCONVERT('Ä Ê Í Õ Ø A B C D E','US7ASCII','WE8ISO8859P1')
FROMDUAL;
DUMP

Returns aVARCHAR2value containing the datatype code,length in bytes,and internal representation of a value
DUMP(<value> [,<return_format>[,<start_position>[,<length>]]])
8 Octal
10 Decimal
16 Hexidecimal
17 Single Characters
1008 octal notation with the character set name
1010 decimal notation with the character set name
1016 hexadecimal notation with the character set name
1017 single characters with the character set name
set linesize 121
col dmp format a50

SELECTtable_name,DUMP(table_name) DMPFROMuser_tables;

SELECTtable_name,DUMP(table_name,16) DMPFROMuser_tables;

SELECTtable_name,16,7,4) DMPFROMuser_tables;
INSTR
See links at page bottom
INSTRB
Location of a string,within another string,in bytes INSTRB(
STR1VARCHAR2CHaraCTER SET ANY_CS,-- test string
STR2VARCHAR2CHaraCTER SET STR1%CHARSET,-- string to locate
POSPLS_INTEGER:= 1,-- position
NTHPOSITIVE:= 1) -- occurrence number
RETURNPLS_INTEGER;
SELECTINSTRB('Dan Morgan',' ',1,1)FROMDUAL;
INSTRC
Location of a string,in Unicode complete characters INSTRC(
STR1VARCHAR2CHaraCTER SET ANY_CS,-- position
NTHPOSITIVE:= 1) -- occurrence number
RETURNPLS_INTEGER;
SELECTINSTRC('Dan Morgan',1)FROMDUAL;
INSTR2
Location of a string,in UCS2 code points INSTR2(
STR1VARCHAR2CHaraCTER SET ANY_CS,-- position
NTHPOSITIVE:= 1) -- occurrence number
RETURNPLS_INTEGER;
SELECTINSTR2('Dan Morgan',1)FROMDUAL;
INSTR4
Location of a string,in UCS4 code points INSTR4(
STR1VARCHAR2CHaraCTER SET ANY_CS,-- position
NTHPOSITIVE:= 1) -- occurrence number
RETURNPLS_INTEGER;
SELECTINSTR4('Dan Morgan',1)FROMDUAL;
LENGTH
String Length LENGTH(<string_or_column>)
SELECTLENGTH('Dan Morgan')FROMDUAL;
LENGTHB
Returns length in bytes LENGTHB(<char_varchar2_or_clob_value>)
SELECTtable_name,LENGTHB(table_name)FROMuser_tables;
Note:Additional forms of LENGTH (LENGTHC,LENGTH2,and LENGTH4) are also available.
LPAD
Left Pad

Overload 1
LPAD(
str1VARCHAR2CHaraCTER SET ANY_CS,
lenPLS_INTEGER,
PADVARCHAR2CHaraCTER SET STR1%CHARSET)
RETURNVARCHAR2CHaraCTER SET STR1%CHARSET;
SELECTLPAD('Dan Morgan',25,'x')FROMDUAL;
Overload 2 LPAD(
str1VARCHAR2CHaraCTER SET ANY_CS,
lenPLS_INTEGER)
RETURNVARCHAR2CHaraCTER SET STR1%CHARSET;
SELECTLPAD('Dan Morgan',25)FROMDUAL;
Overload 3 LPAD(
str1CLOBCHaraCTER SET ANY_CS,
lenNUMBER,
PADCLOBCHaraCTER SET STR1%CHARSET)
RETURNCLOBCHaraCTER SET STR1%CHARSET;
TBD
Overload 4 LPAD(
str1CLOBCHaraCTER SET ANY_CS,
len INTEGER)
RETURNCLOBCHaraCTER SET STR1%CHARSET;
TBD
LTRIM
Left Trim

Overload 1
LTRIM(
str1VARCHAR2CHaraCTER SET ANY_CS := ' ',
tsetVARCHAR2CHaraCTER SET STR1%CHARSET)
RETURNVARCHAR2CHaraCTER SET STR1%CHARSET;
SELECT'->' ||LTRIM(' Dan Morgan ') || '<-'FROMDUAL;
Overload 2 LTRIM(
STR1VARCHAR2CHaraCTER SET ANY_CS := ' ')
RETURNVARCHAR2CHaraCTER SET STR1%CHARSET;
SELECT'->' ||LTRIM('xxx Dan Morgan ') || '<-'FROMDUAL;

SELECT'->' ||LTRIM('xxxDan Morgan ','x') || '<-'FROMDUAL;
MAX
The Maximum String based on the current sort parameter MAX(<character_string>)
SELECTMAX(table_name)
FROMuser_tables;
MIN
The Minimum String based on the current sort parameter MIN(<character_string>)
SELECTMIN(table_name)
FROMuser_tables;
NLSSORT

Returns the string of bytes used to sort a string.

The string returned is of RAW data type
NLSSORT(<column_name>,'NLS_SORT= <NLS Parameter>);
CREATETABLEtest (nameVARCHAR2(15));
INSERTINTOtestVALUES('Gaardiner');
INSERTINTOtestVALUES('Gaberd');
INSERTINTOtestVALUES('GÂberd');
COMMIT;

SELECT*FROMtestORDER BYname;

SELECT*FROMtest
ORDER BYNLSSORT(name,'NLS_SORT= XDanish');

SELECT*FROMtest
ORDER BYNLSSORT(name,'NLS_SORT= BINARY_CI');
Quote Delimiters

q used to define a quote delimiter for PL/sql
q'<delimiter><string><delimiter>';
set serveroutput on

DECLARE
s1VARCHAR2(20);
s2VARCHAR2(20);
s3VARCHAR2(20);
BEGIN
s1 :=q'[Isn't this cool]';
s2 :=q'"Isn't this cool"';
s3 :=q'|Isn't this cool|';

dbms_output.put_line(s1);
dbms_output.put_line(s2);
dbms_output.put_line(s3);
END;
/
REPLACE
See links at page bottom
REVERSE
Reverse REVERSE(<string_or_column>)
SELECTREVERSE('Dan Morgan')FROMDUAL;

SELECTDUMP('Dan Morgan')FROMDUAL;
SELECTDUMP(REVERSE('Dan Morgan'))FROMDUAL;
RPAD
Right Pad

Overload 1
RPAD(str1VARCHAR2CHaraCTER SET ANY_CS,lenPLS_INTEGER,
padVARCHAR2CHaraCTER SET STR1%CHARSET)
RETURNVARCHAR2CHaraCTER SET STR1%CHARSET;
SELECTRPAD('Dan Morgan','x')FROMDUAL;
Overload 2 RPAD(str1VARCHAR2CHaraCTER SET ANY_CS,lenPLS_INTEGER)
RETURNVARCHAR2CHaraCTER SET STR1%CHARSET;
SELECTRPAD('Dan Morgan',25) ||'<-'FROMDUAL;
RTRIM
Right Trim

Overload 1
RTRIM(
str1VARCHAR2CHaraCTER SET ANY_CS := ' ',
tsetVARCHAR2CHaraCTER SET STR1%CHARSET)
RETURNVARCHAR2CHaraCTER SET STR1%CHARSET;
SELECT'->' ||RTRIM(' Dan Morganxxx') || '<-'FROMDUAL;
SELECT'->' ||RTRIM(' Dan Morganxxx','xxx') || '<-'FROMDUAL;
Overload 2 RTRIM(
str1VARCHAR2CHaraCTER SET ANY_CS := ' ')
RETURNVARCHAR2CHaraCTER SET STR1%CHARSET;
SELECT'->' ||RTRIM(' Dan Morgan ') || '<-'FROMDUAL;
SOUNDEX

Returns Character String Containing The Phonetic Representation Of Another String
Rules:
  • Retain the first letter of the string and remove all other occurrences of the following letters: a,e,h,i,o,u,w,y
  • Assign numbers to the remaining letters (after the first) as
    follows:
    b,f,p,v = 1
    c,g,j,k,q,s,x,z = 2
    d,t = 3
    l = 4
    m,n = 5
    r = 6
  • If two or more letters with the same number were adjacent in the original name (before step 1),or adjacent except for any intervening h and w,then omit all but the first.
  • Return the first four bytes padded with 0.

SOUNDEX(chVARCHAR2CHaraCTER SET ANY_CS)
RETURNVARCHAR2CHaraCTER SET ch%CHARSET;

CREATETABLEtest (
namecolVARCHAR2(15));

INSERTINTOtest (namecol)VALUES('Smith');
INSERTINTOtest (namecol)VALUES('Smyth');
INSERTINTOtest (namecol)VALUES('Smythe');
INSERTINTOtest (namecol)VALUES('Smither');
INSERTINTOtest (namecol)VALUES('Smidt');
INSERTINTOtest (namecol)VALUES('Smick');
INSERTINTOtest (namecol)VALUES('Smiff');
COMMIT;

SELECTnamecol,SOUNDEX(namecol)FROMtest;
-- Thanks Frank van Bortel for the idea for the above

SELECT*
FROMtest
WHERESOUNDEX(namecol) =SOUNDEX('SMITH');
SUBSTR
See links at page bottom
SUBSTRB
Returns a substring countingbytesrather thancharacters SUBSTRB(
STR1VARCHAR2CHaraCTER SET ANY_CS,
POSPLS_INTEGER,-- starting position
LENPLS_INTEGER:= 2147483647) -- number of characters
RETURNVARCHAR2CHaraCTER SET STR1%CHARSET;
See Demos on theSubstringPage
SUBSTRC
Returns a substring within another string,using Unicode code points SUBSTRC(
STR1VARCHAR2CHaraCTER SET ANY_CS,-- starting position
LENPLS_INTEGER:= 2147483647) -- number of characters
RETURNVARCHAR2CHaraCTER SET STR1%CHARSET;
See Demos on theSubstringPage
SUBSTR2
Returns a substring within another string,using UCS2 code points SUBSTR2(
STR1VARCHAR2CHaraCTER SET ANY_CS,-- starting position
LENPLS_INTEGER:= 2147483647) -- number of characters
RETURNVARCHAR2CHaraCTER SET STR1%CHARSET;
See Demos on theSubstringPage
SUBSTR4
Returns a substring within another string,using UCS4 code points SUBSTR4(
STR1VARCHAR2CHaraCTER SET ANY_CS,-- starting position
LENPLS_INTEGER:= 2147483647) -- number of characters
RETURNVARCHAR2CHaraCTER SET STR1%CHARSET;
See Demos on theSubstringPage
TRANSLATE
See links at page bottom
TREAT
Changes The Declared Type Of An Expression TREAT(<expression> AS REF schema.type))
SELECTname,TREAT(VALUE(p)ASemployee_t).salary SALARY
FROMpersons p;
TRIM (variations are LTRIM and RTRIM)
Trim Spaces TRIM(<string_or_column>)
SELECT' Dan Morgan 'FROMDUAL;

SELECTTRIM(' Dan Morgan ')FROMDUAL;
Trim Other Characters TRIM(<character_to_trim>FROM<string_or_column>)
SELECTTRIM('D'FROM'Dan Morgan')FROMDUAL;
Trim By CHR value TRIM(<string_or_column>)
SELECTASCII(SUBSTR('Dan Morgan',1))FROMDUAL;

SELECTTRIM(CHR(68)FROM'Dan Morgan')FROMDUAL;
Vertical Bars
Also kNown as Pipes <first_string>||<second_string>
SELECT'Dan'||' '||'Morgan'FROMDUAL;

WITHALIAS

SELECT'Dan'||' '||'Morgan' NAMEFROMDUAL;
or
SELECT'Dan'||' '||'Morgan'ASNAMEFROMDUAL;
VSIZE
Byte Size VSIZE(e INVARCHAR2)RETURNNUMBER
SELECTVSIZE('Dan Morgan')FROMDUAL;

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐