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;

相关文章

Java Oracle 结果集是Java语言中处理数据库查询结果的一种方...
Java AES和Oracle AES是现代加密技术中最常使用的两种AES加密...
Java是一种广泛应用的编程语言,具备可靠性、安全性、跨平台...
随着移动互联网的发展,抽奖活动成为了营销活动中不可或缺的...
Java和Oracle都是在计算机领域应用非常广泛的技术,他们经常...
Java 是一门非常流行的编程语言,它可以运行于各种操作系统上...