日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

第107章 SQL函数 $PIECE

發布時間:2023/12/16 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 第107章 SQL函数 $PIECE 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

  • 第107章 SQL函數 $PIECE
  • 大綱
  • 參數
  • 描述
  • 參數
    • string-expression
    • delimiter
    • from
    • to
  • 示例
  • 注意
    • 使用`$PIECE`解壓數據值
    • $PIECE 和 $LENGTH
    • $PIECE and $LIST
    • Null Values
  • 嵌套 $PIECE 操作

第107章 SQL函數 $PIECE

返回由分隔符標識的子字符串的字符串函數。

大綱

$PIECE(string-expression,delimiter[,from[,to]])

參數

  • string-expression - 要從中提取子字符串的目標字符串。
    表達式,可以是字段名、字符串字面值、數字或其他函數的結果。
  • delimiter - 用于標識子字符串的分隔符。
  • from - 可選-指定要從目標字符串返回的子字符串或子字符串范圍的開頭的整數。
    子字符串由分隔符分隔,從1開始計數。
    如果省略,則返回第一個子字符串。
  • to - 可選-一個整數,指定從目標字符串返回的子字符串范圍的結束子字符串。
    必須與from連用。

描述

$PIECE從字符串表達式中返回指定的子字符串(PIECE)。
返回的子字符串取決于所使用的參數:

  • $PIECE(string-expression,delimiter)返回string-expression中的第一個子字符串。
    如果delimiter出現在字符串表達式中,則這是在delimiter第一次出現之前的子字符串。
    如果分隔符沒有出現在字符串表達式中,則返回的子字符串為字符串表達式。
  • $PIECE(string-expression,delimiter,from)返回string-expression的第n個片段的子字符串,其中整數n由from參數指定,片段由一個分隔符分隔。
    分隔符不返回。
  • $PIECE(string-expression,delimiter,from,to)返回一個范圍的子字符串,包括從中指定的子字符串到到中指定的子字符串。
    $PIECE的這種4個參數形式返回一個字符串,其中包括在from和to子字符串之間出現的任何中間分隔符。
    如果to大于子字符串的數量,則返回的子字符串包括到string-expression字符串結尾的所有子字符串。

參數

string-expression

要從其中返回子字符串的字符串。
它可以是字符串字面值、變量名或任何計算結果為字符串的有效表達式。

字符串通常包含用作分隔符的字符(或字符串)的實例。
此字符或字符串也不能用作字符串表達式中的數據值。

如果你指定空字符串(null)作為目標字符串,$PIECE返回<null>,空字符串。

delimiter

用于在字符串表達式中分隔子字符串的搜索字符串。
它可以是數字字面值或字符串字面值(用引號括起來)、變量名或計算結果為字符串的表達式。

通常,分隔符是一個指定的字符,它永遠不會在字符串數據中使用,但僅用于作為分隔子字符串的分隔符使用。
分隔符也可以是多字符搜索字符串,其中的單個字符可以在字符串數據中使用。

如果指定空字符串(null)作為分隔符,$PIECE返回<null>,空字符串。

from

字符串表達式中的子字符串數,從1開始計算。
它必須是正整數、整型變量的名稱或計算結果為正整數的表達式。
子字符串由分隔符分隔。

  • 如果from參數被省略或設置為1,$PIECE返回string-expression的第一個子字符串。
    如果string-expression不包含指定的分隔符,from值為1將返回string-expression。
  • 如果from參數通過計數來標識string-expression中的最后一個子字符串,則返回這個子字符串,無論它后面是否有分隔符。
  • 如果from的值是NULL,空字符串,零,或負數,并且指定了no to參數,$PIECE返回一個空字符串。
    但是,如果指定了to參數,$PIECE將這些from值視為from=1。
  • 如果from的值大于string-expression中子字符串的數量,$PIECE返回一個空字符串。

如果from參數與to參數一起使用,它將標識將作為字符串返回的子字符串范圍的開始,并且應該小于to的值。

to

字符串表達式中結束from參數初始化的范圍的子字符串的數目。
返回的字符串包括from和to子字符串,以及任何中間子字符串和分隔它們的分隔符。
to參數必須為正整數、整型變量的名稱或計算結果為正整數的表達式。
to參數必須與from一起使用,并且應該大于from的值。

  • 如果from小于to, $PIECE返回一個由該范圍內所有分隔的子字符串組成的字符串,包括from和to子字符串。
    這個返回的字符串包含此范圍內的子字符串和分隔符。
  • 如果to大于帶分隔符的子字符串的數量,則返回的字符串包含所有字符串數據(子字符串和分隔符),從from子字符串開始,一直到字符串表達式字符串的結尾。
  • 如果from等于to,則返回from子字符串。
  • 如果from大于to, $PIECE返回一個空字符串。
  • 如果to是空字符串(null), $PIECE返回一個空字符串。

示例

下面的示例返回由","分隔符標識的第一個子字符串'Red':

SELECT $PIECE('Red,Green,Blue,Yellow,Orange,Black',',')Red

下面的示例返回由","分隔符標識的第三個子字符串'Blue':

SELECT $PIECE('Red,Green,Blue,Yellow,Orange,Black',',',3)Blue

下面的例子返回'Blue,Yellow,Orange', colorlist中的第三到第五個元素,用","分隔:

SELECT $PIECE('Red,Green,Blue,Yellow,Orange,Black',',',3,5)Blue,Yellow,Orange

下面的$PIECE函數都返回'123',表明當from為1時,雙參數形式等價于三參數形式:

SELECT $PIECE('123#456#789','#') AS TwoArg123 SELECT $PIECE('123#456#789','#',1) AS ThreeArg123

下面的示例使用多字符分隔符字符串'#-#'返回第三個子字符串'789'。
這里,分隔符字符串的組成字符'#'和'-'可以用作數據值;
只保留指定的字符序列(#-#):

SELECT $PIECE('1#2-3#-#45##6#-#789','#-#',3)3

下面的例子返回“MAR;APR;MAY”。
它們由第三個到第五個子字符串組成,由';'分隔符標識:

SELECT $PIECE('JAN;FEB;MAR;APR;MAY;JUN',';',3,5)MAR;APR;MAY

下面的例子使用$PIECE從員工名和供應商聯系人名中提取出姓氏,然后執行一個JOIN,返回與供應商聯系人姓相同的員工的實例:

SELECT E.Name,V.Contact FROM Sample.Employee AS E INNER JOIN Sample.Vendor AS V ON $PIECE(E.Name,',')=$PIECE(V.Contact,',')

注意

使用$PIECE解壓數據值

$PIECE 通常用于“解包”包含由分隔符分隔的多個字段的數據值。典型的分隔符包括斜杠 (/)、逗號 (,)、空格 ( ) 和分號 (;)。以下示例值非常適合與 $PIECE 一起使用:

'John Jones/29 River St./Boston MA, 02095' 'Mumps;Measles;Chicken Pox;Diptheria' '45.23,52.76,89.05,48.27'

$PIECE 和 $LENGTH

$LENGTH 的雙參數形式根據分隔符返回字符串中子字符串的數量。使用 $LENGTH 確定字符串中子字符串的數量,然后使用 $PIECE 提取單個子字符串。

$PIECE and $LIST

$PIECE 和 $LIST 函數使用的數據存儲技術不兼容,不應組合使用。例如,嘗試在使用 $LISTBUILD 創建的列表上使用 $PIECE 會產生不可預測的結果,應該避免。對于 SQL 函數和相應的 ObjectScript 函數都是如此。

$LIST 函數指定子字符串而不使用指定的分隔符。如果留出分隔符或字符序列不適合數據類型(例如,位串數據),則應使用 $LISTBUILD 和 $LIST SQL 函數來存儲和檢索子字符串。

Null Values

$PIECE 不區分具有空字符串值 (NULL) 的分隔子字符串和不存在的子字符串。兩者都返回 <null>,,即空字符串值。例如,以下示例均返回值為 7 的空字符串:

SELECT $PIECE('Red,Green,Blue,Yellow,Orange,Black',',',7)NUll SELECT $PIECE('Red,Green,Blue,Yellow,Orange,Black,',',',7)NULL

在第一種情況下,沒有第七個子串;返回一個空字符串。在第二種情況下,有第七個子字符串,由字符串表達式字符串末尾的分隔符指示;第七個子字符串的值是空字符串。

以下示例顯示字符串表達式中的空值。它提取子字符串 3。此子字符串存在,但包含一個空字符串:

SELECT $PIECE('Red,Green,,Blue,Yellow,Orange,Black,',',',3)NULL

以下示例還返回空字符串,因為指定的子字符串不存在:

SELECT $PIECE('Red,Green,,Blue,Yellow,Orange,Black,',',',0)NULL SELECT $PIECE('Red,Green,,Blue,Yellow,Orange,Black,',',',8,20)NULL

在以下示例中,$PIECE 函數返回整個字符串表達式字符串,因為字符串表達式字符串中沒有出現分隔符:

SELECT $PIECE('Red,Green,Blue,Yellow,Orange,Black,','#')Red,Green,Blue,Yellow,Orange,Black,

嵌套 $PIECE 操作

要執行復雜的提取,可以將 $PIECE 引用相互嵌套。內部 $PIECE 返回一個由外部 $PIECE 操作的子字符串。每個 $PIECE 都使用自己的分隔符。例如,以下返回狀態縮寫“MA”:

SELECT $PIECE($PIECE('John Jones/29 River St./Boston MA 02095','/',3),' ',2)MA

下面是嵌套$PIECE操作的另一個例子,它使用了分隔符的層次結構。
首先,內部的$PIECE使用插入符號(^)分隔符來查找字符串的第二部分'A,B,C'。
然后外部$PIECE使用逗號(,)分隔符返回子串'A,B,C'的第一塊和第二塊('A,B'):

SELECT $PIECE($PIECE('1,2,3^A,B,C^@#!','^',2),',',1,2)A,B

總結

以上是生活随笔為你收集整理的第107章 SQL函数 $PIECE的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。