全部產品
Search
文件中心

PolarDB:字串函數和操作符

更新時間:Jul 06, 2024

本節描述了用於檢查和操作字串值的函數和操作符。

在這個環境中的串包括所有類型charactercharacter varyingtext的值。 除非特別說明,這些函數和操作符聲明為接受並返回text類型。 他們將互換接受character varying參數。 在應用函數或操作符之前character類型的值將被轉換為text,結果刪除character值中的任何末尾空格。

SQL 定義了一些字串函數,它們使用關鍵字,而不是逗號來分隔參數。詳情請見 SQL 字串函數和操作符表,本資料庫也提供了這些函數使用正常函數調用文法的版本(見其他字串函數表)。

說明

由於存在從那些資料類型到text的隱式強制措施,在本資料庫 8.3 之前,這些函數也可以接受多種非字串資料型別。這些強制措施在目前的版本中已經被刪除,因為它們常常導致令人驚訝的行為。不過,字串串接操作符(||)仍然接受非字串輸入,只要至少一個輸入是一種字串類型,如 SQL 字串函數和操作符表所示。對於其他情況,如果你需要複製之前的行為,可以為text插入一個顯式強制措施。

SQL字串函數和操作符

text || texttext

串連兩個字串。

'Post' || 'greSQL'PostgreSQL

text || anynonarraytext

anynonarray || texttext

將非字串輸入轉換為文本,然後將兩個字串串聯在一起。 (非字串輸入不能為數群組類型,因為這將在||操作符的數組中造成歧義。如果你想串連一個數組的文本相等的,請顯式地將其轉換為text 。)

'Value: ' || 42Value: 42

text IS [NOT] [form] NORMALIZEDboolean

檢查字串是否在指定的 Unicode 正常化表單中。 可選的form關鍵詞指定表單:NFC (預設的)、NFDNFKCNFKD。 只有在伺服器編碼為UTF8時,才能使用此運算式。 請注意,使用這個運算式檢查正常化通常比正常化可能已經正常化的字串要快。

U&'\0061\0308bc' IS NFD NORMALIZEDt

bit_length ( text ) → integer

返回字串中的位元(8倍於octet_length)。

bit_length('jose')32

char_length ( text ) → integer

character_length ( text ) → integer

返回字串中的字元數。

char_length('josé')4

lower ( text ) → text

根據資料庫的語言環境規則,將字串轉換為全部小寫。

lower('TOM')tom

normalize ( text [, form ] ) → text

將字串轉換為指定的Unicode正常化形式。 可選的form關鍵字指定了如下形式:NFC (the default),NFDNFKC,或NFKD。 該函數只能在伺服器編碼為UTF8時使用。

normalize(U&'\0061\0308bc', NFC)U&'\00E4bc'

octet_length ( text ) → integer

返回字串的位元組數。

octet_length('josé')5 (if server encoding is UTF8)

octet_length ( character ) → integer

返回字串中的位元組數。 由於此版本的函數直接接受character類型,它不會剝離尾隨空格。

octet_length('abc '::character(4))4

overlay ( string text PLACING newsubstring text FROM start integer [ FOR count integer ] ) → text

替換stringstart字元開始的子串,並用newsubstring擴充到count字元。 如果省略了count,則預設為newsubstring的長度。

overlay('Txxxxas' placing 'hom' from 2 for 4)Thomas

position ( substring text IN string text ) → integer

返回指定的substringstring起始索引,如果不存在則返回零,。

position('om' in 'Thomas')3

substring ( string text [ FROM start integer ] [ FOR count integer ] ) → text

如果已指定,提取stringstart字元開始的子串, 並且在count字元後停止。如果已指定的話。 提供至少一個startcount中的至少一個。

substring('Thomas' from 2 for 3)hom

substring('Thomas' from 3)omas

substring('Thomas' for 2)Th

substring ( string text FROM pattern text ) → text

提取匹配POSIXRegex的子字串。

substring('Thomas' from '...$')mas

substring ( string text FROM pattern text FOR escape text ) → text

提取匹配 SQL Regex的字串。

substring('Thomas' from '%#"o_a#"_' for '#')oma

trim ( [ LEADING | TRAILING | BOTH ] [ characters text ] FROM string text ) → text

string的開始、末端或兩端(預設為BOTH )移除僅包含characters(預設為空白格)字元的最長字串。

trim(both 'xyz' from 'yxTomxx')Tom

trim ( [ LEADING | TRAILING | BOTH ] [ FROM ] string text [, characters text ] ) → text

這是一個非標準的trim()文法。

trim(both from 'yxTomxx', 'xyz')Tom

upper ( text ) → text

根據資料庫的定位規則,將字串轉換為所有大寫。

upper('tom')TOM

還有額外的串操作函數可以用,它們在其他字串函數表中列出。它們有些在內部用於實現 SQL 字串函數和操作符表列出的 SQL 標準字串函數。

其他字串函數

ascii ( text ) → integer

返回參數的第一個字元的數字代碼。在UTF8編碼中,返回該字元的Unicode代碼點。 在其他多位元組編碼中,該參數必須是一個ASCII字元。

ascii('x')120

btrim ( string text [, characters text ] ) → text

string的開頭或結尾刪除最長的只包含characters(預設是一個空格)的字串

btrim('xyxtrimyyx', 'xyz')trim

chr ( integer ) → text

返回給定代碼的字元。在UTF8編碼中該參數被視作一個Unicode代碼點。 在其他多位元組編碼中該參數必須指定一個ASCII字元。 chr(0) 字元不被允許,因為文本資料類型不能儲存這種字元。

chr(65)A

concat ( val1 "any" [, val2 "any" [, ...] ] ) → text

串連所有參數的文本表示。空參數被忽略。

concat('abcde', 2, NULL, 22)abcde222

concat_ws ( sep text, val1 "any" [, val2 "any" [, ...] ] ) → text

用分隔字元串連除第一個參數外的所有參數。第一個參數用作分隔字元字串,不應為NULL。其他NULL參數將被忽略。

concat_ws(',', 'abcde', 2, NULL, 22)abcde,2,22

format ( formatstr text [, formatarg "any" [, ...] ] ) → text

根據格式字串對參數進行格式化。 這個函數類似於C函數 sprintf

format('Hello %s, %1$s', 'World')Hello World, World

initcap ( text ) → text

將每個單詞的第一個字母轉換為大寫,其餘字母轉換為小寫。單詞是由非字母數字字元分隔的字母數字字元序列。

initcap('hi THOMAS')Hi Thomas

left ( string text, n integer ) → text

以字串返回第一個 n 字元,或在 n 為負時, 返回最後 |n| 個字元之外的全部字元。

left('abcde', 2)ab

length ( text ) → integer

返回字串中的字元數。

length('jose')4

lpad ( string text, length integer [, fill text ] ) → text

string擴充為長度length,通過前置字元fill(預設空格)。 如果string已經超過length那麼它將被截斷(在右側)。

lpad('hi', 5, 'xy')xyxhi

ltrim ( string text [, characters text ] ) → text

string開始刪除包含characters(預設空格)中僅包含字元的最長字串。

ltrim('zzzytest', 'xyz')test

md5 ( text ) → text

計算參數的 MD5 hash ,結果以十六進位形式寫入。

md5('abc')900150983cd24fb0​d6963f7d28e17f72

parse_ident ( qualified_identifier text [, strict_mode boolean DEFAULT true ] ) → text[]

qualified_identifier拆分為一個標識符數組,刪除單個標識符的任何引用。 預設情況下,最後一個標識符之後的額外字元被視為錯誤;但是,如果第二個參數為false,則忽略這些額外的字元。 (這種行為對於解析類似函數的對象的名稱有作用。) 請注意,此函數不會截斷超長標識符。如果你想截斷,你可以把結果給到name[]

parse_ident('"SomeSchema".someTable'){SomeSchema,sometable}

pg_client_encoding ( ) → name

返回當前用戶端編碼名稱。

pg_client_encoding()UTF8

quote_ident ( text ) → text

返回適合引用的給定字串,作為SQL語句字串中的標識符。 只有在必要的情況下才添加引號(例如,如果字串包含非標識符字元或將被大小寫摺疊)。 嵌入的引號被適當地加雙引號。

quote_ident('Foo bar')"Foo bar"

quote_literal ( text ) → text

返回在SQL語句字串中適當引用的給定字串,用作字串文字使用。 嵌入式單引號和反斜線適當的翻倍(轉雙引號或雙斜線)。 請注意,quote_literal返回無效輸入;如果這個參數可能為空白,quote_nullable通常更合適。

quote_literal(E'O\'Reilly')'O''Reilly'

quote_literal ( anyelement ) → text

將給定的值轉換為文本,然後將其作為字面量引用。 內嵌的單引號和反斜線被適當地翻倍。

quote_literal(42.5)'42.5'

quote_nullable ( text ) → text

返回在SQL語句字串中適當引用的給定字串文字;或者,如果參數為null,則返回NULL。 內嵌的單引號和反斜線被適當地翻倍。

quote_nullable(NULL)NULL

quote_nullable ( anyelement ) → text

將給定值轉換為文本,然後將其作為字面量引用;或者,如果參數為null,則返回NULL。 內嵌的單引號和反斜線被適當地翻倍。

quote_nullable(42.5)'42.5'

regexp_match ( string text, pattern text [, flags text ] ) → text[]

返回從POSIXRegex到string的第一個匹配中捕獲的子字串。

regexp_match('foobarbequebaz', '(bar)(beque)'){bar,beque}

regexp_matches ( string text, pattern text [, flags text ] ) → setof text[]

返回通過將POSIXRegex與string匹配而捕獲的子字串。

regexp_matches('foobarbequebaz', 'ba.', 'g')

regexp_replace ( string text, pattern text, replacement text [, flags text ] ) → text

替換匹配POSIXRegex的子字串。

regexp_replace('Thomas', '.[mN]a.', 'M')ThM

regexp_split_to_array ( string text, pattern text [, flags text ] ) → text[]

使用POSIXRegex作為分隔字元拆分string

regexp_split_to_array('hello world', '\s+'){hello,world}

regexp_split_to_table ( string text, pattern text [, flags text ] ) → setof text

使用POSIXRegex作為分隔字元拆分string

regexp_split_to_table('hello world', '\s+')

repeat ( string text, number integer ) → text

重複string指定number的次數。

repeat('Pg', 4)PgPgPgPg

replace ( string text, from text, to text ) → text

string 中當前的子串from替換為子串to

replace('abcdefabcdef', 'cd', 'XX')abXXefabXXef

reverse ( text ) → text

顛倒字串中字元的順序。

reverse('abcde')edcba

right ( string text, n integer ) ) → text

返回字串中的最後n個字元,或者在n>為負時,返回除了前面的|n|字元之外的所有字元。

right('abcde', 2)de

rpad ( string text, length integer [, fill text ] ) ) → text

擴充 string 到長度 length,通過追加fill 字元(預設為空白格)。 如果string 已經比 length 長,則截斷它。

rpad('hi', 5, 'xy')hixyx

rtrim ( string text [, characters text ] ) → text

string末尾刪除包含characters(預設為空白格)中僅包含字元的最長字串。

rtrim('testxxzx', 'xyz')test

split_part ( string text, delimiter text, n integer ) → text

delimiter出現時拆分string,並且返回第n個欄位(從一計數)。

split_part('abc~@~def~@~ghi', '~@~', 2)def

strpos ( string text, substring text ) → integer

返回在string中指定的substring的起始索引,如果不存在則為零。 (與(substringstring中的)位置相同,但是請注意反轉的參數順序)。

strpos('high', 'ig')2

substr ( string text, start integer [, count integer ] ) → text

提取stringstart字元開始的子字串,並擴充count字元,如果指定了的話。 (與 子字串(stringstart 開始計數 count)相同)。

substr('alphabet', 3)phabet

substr('alphabet', 3, 2)ph

starts_with ( string text, prefix text ) → boolean

如果 stringprefix開始就返回真。

starts_with('alphabet', 'alph')t

to_ascii ( string text ) → text

to_ascii ( string text, encoding name ) → text

to_ascii ( string text, encoding integer ) → text

string從另一個編碼中轉換為ASCII,該編碼可按名稱或編號標識。 如果encoding被省略,則假定資料庫編碼(這在實踐中是唯一有用的案例)。轉換主要包括降音。 轉換僅支援來自 LATIN1LATIN2LATIN9、 和 WIN1250 的編碼。(其他請參見 unaccent 模組, 更靈活的解決方案)

to_ascii('Karél')Karel

to_hex ( integer ) → text

to_hex ( bigint ) → text

將數字轉換為其相應的十六進位表示形式。

to_hex(2147483647)7fffffff

translate ( string text, from text, to text ) → text

string中與from集合中匹配的每個字元替換為to集合中相應的字元。 如果from長於tofrom中出現的額外字元被刪除。

translate('12345', '143', 'ax')a2x5

concatconcat_wsformat函數是可變的,因此可以把要串接或格式化的值作為一個標記了VARIADIC關鍵字的數組進行傳遞。 數組的元素被當作函數的獨立普通參數一樣處理。如果可變數組參數為 NULL,concatconcat_ws返回 NULL,但format把 NULL 當作一個零元素數組。

format

函數format根據一個格式字串產生格式化的輸出,其形式類似於 C 函數sprintf

    format(formatstr text [, formatarg "any" [, ...] ])

formatstr是一個格式字串,它指定了結果應該如何被格式化。格式字串中的文本被直接複製到結果中,除了使用格式說明符的地方。格式說明符在字串中扮演著預留位置的角色,它定義後續的函數參數如何被格式化及插入到結果中。每一個formatarg參數會被根據其資料類型的常規輸出規則轉換為文本,並接著根據格式說明符被格式化和插入到結果字串中。

格式說明符由一個%字元開始並且有這樣的形式

    %[position][flags][width]type

其中的各組件域是:

position(可選)一個形式為n``$的字串,其中n是要列印的參數的索引。索引 1 表示formatstr之後的第一個參數。如果position被忽略,預設會使用序列中的下一個參數。

flags(可選)控制格式說明符的輸出如何被格式化的附加選項。當前唯一支援的標誌是一個負號(-),它將導致格式說明符的輸出會被靠左對齊(left-justified)。除非width域也被指定,否者這個域不會產生任何效果。

width(可選)指定用於顯示格式說明符輸出的最小字元數。輸出將被在左部或右部(取決於-標誌)用空格填充以保證充滿該寬度。太小的寬度設定不會導致輸出被截斷,但是會被簡單地忽略。寬度可以使用下列形式之一指定:一個正整數;一個星號()表示使用下一個函數參數作為寬度;或者一個形式為```n$的字串表示使用第n`個函數參數作為寬度。

如果寬度來自於一個函數參數,則參數在被格式說明符的值使用之前就被消耗掉了。如果寬度參數是負值,結果會在長度為abswidth)的域中被靠左對齊(如果-標誌被指定)。

type(必需)格式轉換的類型,用於產生格式說明符的輸出。支援下面的類型:

  • s將參數值格式化為一個簡單字串。一個控制被視為一個Null 字元串。

  • I將參數值視作 SQL 標識符,並在必要時用雙寫引號包圍它。如果參數為空白,將會是一個錯誤(等效於quote_ident)。

  • L將參數值引用為 SQL 文字。一個空值將被顯示為不帶引號的字串NULL(等效於quote_nullable)。

除了以上所述的格式說明符之外,要輸出一個文字形式的%字元,可以使用特殊序列%%

下面有一些基本的格式轉換的例子:

    SELECT format('Hello %s', 'World');
    結果:Hello World

    SELECT format('Testing %s, %s, %s, %%', 'one', 'two', 'three');
    結果:Testing one, two, three, %

    SELECT format('INSERT INTO %I VALUES(%L)', 'Foo bar', E'O\'Reilly');
    結果:INSERT INTO "Foo bar" VALUES('O''Reilly')

    SELECT format('INSERT INTO %I VALUES(%L)', 'locations', 'C:\Program Files');
    結果:INSERT INTO locations VALUES(E'C:\\Program Files')

下面是使用width域和-標誌的例子:

    SELECT format('|%10s|', 'foo');
    結果:|       foo|

    SELECT format('|%-10s|', 'foo');
    結果:|foo       |

    SELECT format('|%*s|', 10, 'foo');
    結果:|       foo|

    SELECT format('|%*s|', -10, 'foo');
    結果:|foo       |

    SELECT format('|%-*s|', 10, 'foo');
    結果:|foo       |

    SELECT format('|%-*s|', -10, 'foo');
    結果:|foo       |

這些例子展示了position域的例子:

    SELECT format('Testing %3$s, %2$s, %1$s', 'one', 'two', 'three');
    結果:Testing three, two, one

    SELECT format('|%*2$s|', 'foo', 10, 'bar');
    結果:|       bar|

    SELECT format('|%1$*2$s|', 'foo', 10, 'bar');
    結果:|       foo|

不同於標準的 C 函數sprintf,本資料庫的format函數允許將帶有或者不帶有position域的格式說明符被混在同一個格式字串中。一個不帶有position域的格式說明符總是使用最後一個被消耗的參數的下一個參數。另外,format函數不要求所有函數參數都被用在格式字串中。例如:

    SELECT format('Testing %3$s, %2$s, %s', 'one', 'two', 'three');
    結果:Testing three, two, three

對於安全地構造動態 SQL 陳述式,%I%L格式說明符特別有用。

NLS_UPPER

描述

該函數將字串中英文字母全部轉為大寫。

文法

NLS_UPPER(char [, 'nlsparam' ])

參數

參數

說明

char

指定要轉換的字串。字串類型可為 CHARVARCHAR2NCHARNVARCHAR2或 CLOB

傳回型別

返回與char相同的類型資料。

樣本

select NLS_UPPER('aaa BBB CcC') FROM DUAL;
  nls_upper  
-------------
 AAA BBB CCC

NLSSORT

描述

該函數用於返回排序之後的字串。

文法

NLSSORT(char [, 'nlsparam' ])

參數

參數

說明

char

指定要排序的字串。字串類型可為 CHARVARCHAR2NCHARNVARCHAR2或 CLOB

nlsparam

指定返回字串的排序方式,為可選項。

傳回型別

返回與c相同的類型資料。

樣本

CREATE TABLE test (name VARCHAR2(15));
INSERT INTO test VALUES ('ccc');
INSERT INTO test VALUES ('bbb');
INSERT INTO test VALUES ('aaa');
SELECT * FROM test ORDER BY name;
   name    
-----------
 Gaardiner
 Gaasten
 Gaberd

SELECT * FROM test ORDER BY NLSSORT(name, 'NLS_SORT = Danish');
   name    
-----------
 Gaberd
 Gaardiner
 Gaasten

REGEXP_INSTR

描述

該函數作用是返回Regex匹配值在源字串中的位置。

文法

REGEXP_INSTR (source_char, pattern[, position[, occurrence[, return_opt[, match_param[, subexpr]]]]])

參數

參數

說明

source_char

指定用作搜尋值的字元運算式,資料類型可為CHARVARCHAR2NCHARNVARCHAR2或 CLOB

pattern

指定Regex截取規則。它通常是一個文本文字,字元類型可為CHARVARCHAR2NCHARNVARCHAR2

position

指定開始Regex匹配的起始位置,取值是一個正整數,為可選項。預設值是 1,表示從第一個字元開始搜尋 source_char

occurrence

指定source_char中第幾個Regex匹配位置,為可選項。預設值為1。如果occurrence大於1,則從第一次匹配後的第一個字元開始搜尋第二次Regex匹配,依此類推。

return_opt

指定返回出現匹配值位置選項,為可選項。預設值為0

  • 如果指定0,則返回匹配的第一個字元的位置。

  • 如果指定1,則返回匹配的最後字元後一位的位置。

match_param

指定更改Regex預設匹配方式,為可選項。是資料類型VARCHAR2CHAR的字元運算式。

  • i表示大小寫不敏感。

  • c表示大小寫敏感。

  • n表示句點 .可以匹配分行符號。

  • m表示多行模式。

  • x表示忽略空白字元,預設情況下,空白字元會相互匹配。

subexpr

  • 指示 pattern要返回的子運算式,是一個從 0到 9的非負整數,為可選項。預設值為 0,表示返回第一個子運算式出現的位置。

傳回型別

返回NUMBER類型資料

樣本

SELECT regexp_instr('abcdefghi', 'd.f') FROM DUAL;
 regexp_instr 
--------------
            4

INSTR

描述

該函數在一個字串中搜尋指定的字元,返回傳現指定的字元的位置。多位元組字元(漢字、全形符等)按 1 個字元計算。

文法

INSTR(char1,char2[,i[,j]])

參數

參數

說明

char1

被搜尋的字串。字串類型可以為 CHARVARCHAR2NCHARNVARCHAR2或 CLOB

char2

指定要搜尋的字串。字串類型可以為 CHARVARCHAR2NCHARNVARCHAR2或 CLOB

i

搜尋的開始位置,預設值為1。當值小於0時,搜尋從反方向開始,但是仍返回被搜尋到的字元的正序位置。

j

char2j次出現的位置,為可選項。預設值為 1

傳回型別

返回NUMBER類型資料

樣本

SELECT INSTR('PolarDB-PG','P',1,2) "INSTR" FROM DUAL;
 INSTR 
-------
     9

TRIM

描述

該函數用來刪除一個字串的開頭或結尾(或兩者)的字元。

說明

trim_charactertrim_source都可以是VARCHAR2或任何可以隱式轉換為 VARCHAR2 的資料類型。如果函數傳回值的資料類型為VARCHAR2,則該值的最大長度為trim_source

文法

TRIM([{{ LEADING | TRAILING | BOTH }[ trim_character ]|trim_character }FROM] trim_source)

參數

參數

說明

LEADING | TRAILING | BOTH

指定刪除字元的位置。

  • LEADING為開頭字元。如果指定LEADING,則刪除所有與前置字元相等的trim_character

  • TRAILING為結尾字元。如果指定TRAILING,則刪除所有與結尾字元相等的 trim_character

  • BOTH為開頭和結尾字元。如果您指定BOTH或三個都不指定,則刪除與前置和結尾字元相等的trim_character

trim_character

刪除的字元,只能是單個字元。 如果未指定trim_character,則預設值為空白格。

trim_source

需要被刪除字元的字串。 如果僅指定 trim_source,則刪除前置和尾隨空格。

傳回型別

  • 如果trim_source為 CHARVARCHAR2資料類型,則函數返回 VARCHAR2資料類型。

  • 如果trim_source為 NCHARNVARCHAR2資料類型,則函數返回 NVARCHAR2資料類型。

  • 如果trim_source為 CLOB資料類型,則函數返回 CLOB資料類型。

  • 如果trim_source或 trim_character為 NULL,則 TRIM函數返回 NULL

樣本

SELECT trim(both 'x' from 'x!@#$x') FROM DUAL;
 btrim 
-------
 !@#$

TREAT

描述

該函數用於更改運算式的宣告類型,必須對類型具有EXECUTE對象許可權才能使用此函數。

說明
  • 類型必須是已聲明的expr類型的某個超類型或子類型。如果最具體的expr類型是type(或某個子類型),則TREAT返回expr。如果expr的最特定類型不是類型(或某個類型的子類型),則TREAT返回NULL。

  • 只有當聲明的expr類型為REF類型時,才能指定REF。

  • 如果聲明的expr類型是expr源類型的REF,則類型必須是expr的源類型的某個子類型或超類型。如果DEREF(expr)的最特定類型是類型(或類型的子類型),則TREAT返回expr。如果DEREF(expr)的最特定類型不是類型(或類型的子類型),則TREAT返回NULL。

  • 此函數不直接支援CLOB資料。但是,CLOB可以通過隱式資料轉換作為參數傳入。

文法

TREAT( expr AS [ REF ] [ schema. ]type)

參數

參數

說明

expr

字串類型可為 CHARVARCHAR2NCHAR或 NVARCHAR2

REF

可選,指定的REF,只有在expr為REF類型時才可以指定

schema

可選,指定type的schema

type

指定的宣告類型

傳回型別

返回char類型資料

樣本

SELECT name, TREAT(VALUE(p) AS employee_t).salary salary FROM persons p;
NAME                          SALARY
------------------------- ----------
Bob
Joe                           100000
Tim                             1000

SOUNDEX

描述

該函數用於返回包含char的發音表示的字串,使用此功能可以擷取英語中拼字不同但發音相似的單詞。

文法

SOUNDEX(char)

參數

參數

說明

char

字串類型可為 CHARVARCHAR2NCHAR或 NVARCHAR2

傳回型別

返回char類型資料

樣本

create table test(c varchar(100));
insert into test values('Smith');

select c from test where SOUNDEX(c) = SOUNDEX('SMYTHE');
   c   
-------
 Smith

REGEEXP_SUBSTR

描述

該函數允許使用Regex搜尋字串並返回匹配字串,擴充了 SUBSTR函數的功能。 該函數類似於 REGEXP_INSTR,但它不返回子字串的位置,而是返回子字串。如果僅需要匹配字串的內容,但不需要返回其在源字串中的位置,則此函數很適用。

文法

REGEXP_SUBSTR(source_char, pattern
               [, position [, occurrence [, match_param [, subexpr] ] ] ]
              )

參數

參數

說明

source_char

指定用作搜尋值的字元運算式,資料類型可以為 CHARVARCHAR2NCHARNVARCHAR2或 CLOB

pattern

指定Regex截取規則。它通常是一個文本字面量,字元類型可以為 CHARVARCHAR2NCHAR或 NVARCHAR2

position

指定開始Regex匹配的起始位置,取值是一個正整數,為可選項。預設值是1,表示從第一個字元開始搜尋source_char

occurrence

指定source_char中第幾個Regex匹配位置,為可選項。預設值為1。 如果 occurrence大於1,則從第一次匹配後的第一個字元開始搜尋第二次Regex匹配,依此類推。

match_param

指定更改Regex預設匹配方式,為可選項。是資料類型 VARCHAR2或 CHAR的字元運算式。

  • i表示大小寫不敏感。

  • c表示大小寫敏感。

  • n表示句點.可以匹配分行符號。

  • m表示多行模式。

  • x表示忽略空白字元,預設情況下,空白字元會相互匹配。

subexpr

指示 pattern要返回的子運算式,是一個從0到9的非負整數,為可選項。預設值為0,表示返回第一個子運算式。

傳回型別

返回與參數source_char相同的 VARCHAR2或 CLOB資料類型。

樣本

SELECT REGEXP_SUBSTR('500 Oracle Parkway, Redwood Shores, CA',',[^,]+,') "REGEXPR_SUBSTR" FROM DUAL;
  REGEXPR_SUBSTR   
-------------------
 , Redwood Shores,

SELECT REGEXP_SUBSTR('http://www.oracle.com/products','http://([[:alnum:]]+\.?){3,4}/?') "REGEXP_SUBSTR" FROM DUAL;
     REGEXP_SUBSTR      
------------------------
 http://www.oracle.com/

NLS_LOWER

描述

該函數將字串中英文字母全部轉為小寫。

文法

NLS_LOWER(char [, 'nlsparam' ])

參數

參數

說明

char

指定要轉換的字串。字串類型可為 CHARVARCHAR2NCHARNVARCHAR2或 CLOB

傳回型別

返回與char相同的類型資料。

樣本

select NLS_LOWER('aaa BBB CcC') FROM DUAL;
  nls_lower  
-------------
 aaa bbb ccc

NLS_INTCAP

描述

該函數返回字串並將字串中每個單詞的首字母大寫,其他字母小寫。單詞由空格或非字母數字字元分隔。

文法

NLS_INITCAP(c)

參數

參數

說明

c

字串類型可為 CHARVARCHAR2NCHAR或 NVARCHAR2

傳回型別

返回char類型資料

樣本

select INITCAP('aaa BBB CcC') FROM DUAL;
   initcap   
-------------
 Aaa Bbb Ccc