5.8.2.3 資料類型處理

一般而言,引數的資料類型會依照以下優先順序使用以下準則來解析

  • 目標參數的預期資料類型。

  • 根據 JSON 規格的值的資料類型。

  • 使用者指定的資料類型。

最後一個情況很複雜(而且很少見),僅適用於具名引數。例如,假設您有一個 MySQL Shell 外掛程式函數,例如

def set_object_attributes(variables)

其中 variables 是一個字典,其中 沒有 預定義的值集,因此它接受任何鍵,因此也接受值的任何資料類型。若要將名為 streetNumber 的字串屬性設定為 字串 值 123,請發出

$ mysqlsh -- plugin set-object-attributes --streetNumber=123

因為沒有預期的資料類型,所以值 123 會根據 JSON 規格解譯為數值,但我們想要將其儲存為字串,而不是數字。

注意

目前沒有任何 API 函數像這樣的情況,除非使用者如上所述建立外掛程式。

5.8.2.3.1 使用者資料類型

為了避免 MySQL Shell 嘗試猜測輸入資料類型時發生問題,命令列整合支援強制使用特定資料類型,方法是使用以下語法指定具名引數

--key:type=value

其中 type 是下列其中之一

  • str

  • int

  • uint

  • float

  • bool

  • list

  • dict

  • json

若要將值儲存為字串,請發出

$ mysqlsh -- plugin set-object-attributes --streetNumber:str=1234
重要

此格式允許在任何具名引數中使用,但僅在引數沒有預期的資料類型時才需要。如果參數有預期的資料類型,且您指定了不同的資料類型,則會引發錯誤。

5.8.2.3.2 資料類型解析

當您未指定資料類型時,MySQL Shell 會嘗試使用以下邏輯解析資料類型。此資料解譯邏輯是以 JSON 規格為基礎,但有一些 MySQL Shell 特有的新增項目和限制

  • 字串

    • 支援雙引號和單引號字串。

    • 支援十六進位,例如 \xNN,其中 NN 是十六進位數字。這用於以十六進位格式表示 ASCII 字元。

    • 支援垂直 Tab 跳脫字元

  • 也可以定義以下常值

  • undefined:將值定義為未定義(在 CLI 中不是真的需要,因此不建議使用)。

  • true/false:建立布林值。

  • null:定義 null 值。

任何未在 JSON 規格和上述規則中涵蓋的值,都會被解譯為一般字串。