跳到主要內容

SubField - 指令碼與圖表函數

SubField() 用來從上層字串欄位中擷取子字串元件,其中原始記錄欄位包含兩個或多個部分,以分隔符號分隔。

可以使用 Subfield() 函數,例如,為了從包含完整名稱的記錄清單中擷取名字和暱稱、路徑名稱的元件部分,或者從逗點分隔的表格中擷取資料。

如果您在 LOAD 陳述式中使用 Subfield() 函數,並且省略選用 field_no 參數,將針對每一個子字串產生一筆完整記錄。如果使用 Subfield() 載入數個欄位,則會建立所有組合的 Cartesian 產品。

語法:  

SubField(text, delimiter[, field_no ])

傳回的資料類型: 字串

引數:  

引數
引數 描述
text 原始字串。這可以是硬式編碼文字、變數、貨幣符號展開或其他運算式。
delimiter 輸入 text 內將字串分為元件部分的字元。
field_no

選用第三引數是一個整數,指定要傳回上層字串 text 中的哪個子字串。使用值 1 可傳回第一個子字串,使用值 2 可傳回第二個子字串,以此類推。

  • field_no 為正值,會從左至右擷取子字串。
  • field_no 為負值,會從右至左擷取子字串。
提示: 可以使用 SubField(),來取代函數的複雜組合 (例如 Len()Right()Left()Mid() 及其他字串函數)。

範例:  

將範例指令碼新增至您的應用程式並予以執行。然後將結果資料行中列出的欄位新增至您應用程式中的工作表以查看結果。

FullName:

LOAD * inline [

Name

'Dave Owen'

'Joe Tem'

];

 

SepNames:

Load Name,

SubField(Name, ' ',1) as FirstName,

SubField(Name, ' ',-1) as Surname

Resident FullName;

Drop Table FullName;

結果表格
Name FirstName Surname
Dave Owen Dave Owen
Joe Tem Joe Tem

範例:  

此範例展示如何從相同的 LOAD 陳述式中使用 Subfield() 函數的多個執行個體 (每個執行個體均忽略 field_no 參數) 建立所有組合的笛卡兒乘積。將使用 DISTINCT 選項,以免產生重複記錄。

將範例指令碼新增至您的應用程式並予以執行。然後將結果資料行中列出的欄位新增至您應用程式中的工作表以查看結果。

LOAD DISTINCT

Instrument,

SubField(Player,',') as Player,

SubField(Project,',') as Project;

 

Load * inline [

Instrument|Player|Project

Guitar|Neil,Mike|Music,Video

Guitar|Neil|Music,OST

Synth|Neil,Jen|Music,Video,OST

Synth|Jo|Music

Guitar|Neil,Mike|Music,OST

] (delimiter is '|');

 

結果表格
Instrument Player Project
Guitar Mike Music
Guitar Mike Video
Guitar Mike OST
Guitar Neil Music
Guitar Neil Video
Guitar Neil OST
Synth Jen Music
Synth Jen Video
Synth Jen OST
Synth Jo Music
Synth Neil Music
Synth Neil Video
Synth Neil OST