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 規格和上述規則中的任何值都會解譯為純文字字串。