[FileMaker] 函數 Position

Position

目的

Returns the starting position of the specified occurrence of searchString in text.

格式

Position(text;searchString;start;occurrence)

參數

text – any text expression or text field
searchString – any text expression or text field representing the set of characters you want to find.
start – any numeric expression, or field containing a number, representing the number of characters from the start of the text string at which to begin the search.
occurrence – any numeric expression or field containing a number, representing which instance of the text string you want to find. A negative occurrence value causes the scan to go in the opposite direction from start. A zero value for occurrence is invalid and returns a result of zero.

用自己的話嘗試翻譯如下 >

Position(「文字」;「目標字元」;「從左邊第 m 個字元起算」;「第 n 次出現」)

對「文字」找「目標字元」,「從左邊第 m 個字元開始起算」「第 n 次出現」的「目標字元」,一直到「目標字元」出現,總共經過「幾個」字元

得到的資料格式

number

舉例

  1. Position(“Mississippi”;“iss”;1;1) returns 2.
  2. Position(“Mississippi”;“iss”;1;2) returns 5.
  3. Position(“Mississippi”;“iss”;3;1) returns 5.
  4. Left(Name;Position(Name;“ “;1;1)-1) returns William, when Name is a text field that contains William Smith.
  5. Right(Name;Length(Name) – Position(Name;“ “;Length(Name);-1)) returns Smith.

應用

應用在提取姓名,比如 Michel Jordan 這樣的姓名,利用姓名中間的 " " 空白鍵去定位「位置」,Position 函數會返回一個數字,藉此方便我們存取單獨的「姓」或「名」。

或者像是應用在 red_blue_green 這樣的文字資料,可以定位特殊符號的相對「位置」,方便提取特殊符號前後的文字。

容易出現的坑

說實話這個函數我看了好幾次才看懂,我在第 3 個例子一直卡關。

Position(“Mississippi”;“iss”;3;1)

找尋「第 1 次」出現的 “iss",但要從「第 3 個」字元 s 開始找,所以答案不是 2也不是 3,而是 5。

不是2:如果參數是 Position(“Mississippi”;“iss”;1;1) 答案才是 2

不是3:我因為將 Mi 去掉,直接從黃色的 s 開始數,所以得到 3,這是錯誤的。應該還是要從 M 開始數才是正確。所以應該是,Mississippi 找尋「第 1 次」出現的 “iss",出現在第 5 個字元。

個人心得

一直看不懂的原因分析如下:

  • 函數的使用方法並不熟悉
  • 這個函數的 parameter 比較多,總共有四個。(理解起來比較困難)
  • 這樣子的函數用法是第一次遇見
  • 英文的說明,看了好幾次還是沒看懂
  • 中文的說明幫助理解些函數用法的詞彙,比如 Occurrence 重複次數等等
  • 最終還是依靠著紙筆一步一步拆解,用小範圍的概念去理解大的難題
  • 真的不行就問朋友,不一定非得要是學習 FileMaker 的朋友,不同程式專長的朋友都有機會使用到函數,可能只是規則不同而已,所以「大膽詢問」可能是解決問題最快速的方法。

 

發表迴響

在下方填入你的資料或按右方圖示以社群網站登入:

WordPress.com 標誌

您的留言將使用 WordPress.com 帳號。 登出 /  變更 )

Google+ photo

您的留言將使用 Google+ 帳號。 登出 /  變更 )

Twitter picture

您的留言將使用 Twitter 帳號。 登出 /  變更 )

Facebook照片

您的留言將使用 Facebook 帳號。 登出 /  變更 )

連結到 %s