相信這裡有不少朋友已經跟ACL很熟了
本文希望提供ACL指令一個 quick review,讓有需要的朋友可以很快取得概念
而標題以字母排列是方便大家搜尋
另外在「技術百科」的「ACL技術百科」裡有更詳細的圖文範例
需要更詳細介紹的朋友可以去ACL技術百科裡面點選「下載」
ABSOLUTE( )
ABS( )會將指令中的數值以絕對值的方式傳回
在產生隨機樣本前,我們可以使用ABS( )來決定母體的絕對值
指令的格式
ABS(number)
範例
ABS(-7.2) = 7.2
ABS(88.2) = 88.2
同樣我們也可以計算兩個欄位差的絕對值
ABS(Amount1 - Amount2)
AGE( )
AGE( )回傳某特定日期與截止日期比較後,他們相差的天數
所以我們可以運用AGE( )比較兩個日期後,發掘過期的帳或執行帳齡分析
指令的格式
AGE(date < , cutoff_date_yyyymmdd>)
AGE( )會回傳數值,指出兩個日期間所差的天數。
當你沒有填入 cutoff_date 時,ACL就會使用目前的系統時間作為 cutoff_date。
但當你填入 cutoff_date 時,ACL就會計算與會計年度終了或其他截止日期有關連的帳齡。
不論日期欄位是以如何的格式儲存,當你在使用常數時,這個常數一定要是:
表示成YYMMDD或YYYYMMDD的字元字串
表示成YYMMDD或YYYYMMDD的日期常數
合法的ACL日其表達方式
當日期是在截止日之前,那他就會回傳一個正數。
相反地,當日期是在截止日之後,那他就會回傳一個負數。
另外,日期的範圍要在1900 / 01 / 01 到 9999 / 12 / 31 之間才可以。
範例
假設目前的系統時間是 1996/ 01 / 01
AGE('951220') = 12
AGE('19960108') = -7
AGE('19941220','950101') = 12
AGE(Invoice_date) = 65
AGE(Invoice_date,'961231') = 80
為了要抓出名字、數量、與發票日期都大於180天的物品(在會計年度終了時 )
我們可以使用以下的條件式:
AGE(Invoice_date,'961231') > 180
ALLTRIM( )
ALLTRIM( )會將一個字串的頭尾空白都去掉,再回傳該字串,不過在字串裡面的空白則會被保留。
ALLTRIM( )與LTRIM( )相似,不過LTRIM( )僅能用來去掉開頭的空白。
ALLTRIM( )也與TRIM( )相似,不過TRIM( )是用來去掉結尾的空白。
指令的格式
ALLTRIM(string)
範例
ALLTRIM(" abc ") = "abc"
ALLTRIM(" a bc ") = "a bc"
ASCII( )
ASCII( )會傳回第一個字元(character)或ASCII欄位的ASCII code十進位碼。本功能正好與CHR( )的功能相反。
當有些字元欄位值是不可以被print的字元,像是tabs,我們就可以使用ASCII( )以測試字元欄位的值。
功能的格式
ASCII(character)
ASCII( )會分析character中第一個字元,然後回傳一個代表這個自元的十進位值。
如果character是一個常數,請確定它是被放在引號內。
範例
ASCII("A") = 65
ASCII("1") = 49
擷取Description欄位內開頭有制表符(假設十進位值為9 )的記錄:
ASCII(Description) = 9
AT( )
AT( )會回傳其它字串中某特定製串的位置。
使用時,你要明確定義出哪個字串是你要找的。如果找不到,則會傳回0。
對大部分應用來說,只是關心這個字串是否出現,那我們在這種情況下只需使用FIND( )。
當你還需要字串的位置,或是你想要找發生事件的次數,那我們才要用AT( )。
AT( )可以用來找文字欄位(像是description, name 或地址)中一個特定的值
指令的格式
AT(occurrence, string, character_field)
AT( )會搜尋在其它字串中的特定字串。
occurrence:定義出我們找的字串出現的次數。
string:定義出我們想找的字元字串。
character_field:定義出要搜尋的字串,也就是我們會在該字串裡搜尋我們想找的字元字串。
*在AT( )裡,"a" 不等於 "A"。
如果你想要兩者都找,不妨考慮使用UPPER( )將資料都先轉換成大寫再搜尋
範例
AT(1, "ABC", "ABCDEFG") = 1
AT(2, "ABC", "ABCDEFGABCDEFG") = 8
AT(2, "A", "ABCDEFGH") = 0
AT(3, "ABC", "ABCDEFGABCDEFG") = 0
為了要擷取在地址欄位中每個包含"Wild"的地址資料,我們需要將指令定義成類似 if 條件式的樣子:
AT(1, "WILD", UPPER(Address)) > 0
使用UPPER( )這個指令來將這個地址欄位轉換成大寫,如此我們搜尋就不會被大小寫干擾。
如果AT( )的回傳值大於0,那麼就表示在地址欄位中找到"Wild",另外紀錄也被擷取出。
*在這個例子中,我們會同時找到 " Wilder St. " 與 " Swilden Ave."
為了要更仔細區別兩者,你可以再 "Wild " 前後加入空白。
資料來源:
| 2 |
| |
|