แชร์ผ่าน


ค่า GQL และประเภทค่า

Note

คุณลักษณะนี้อยู่ในการแสดงตัวอย่างสาธารณะ การแสดงตัวอย่างนี้จะมีให้โดยไม่มีข้อตกลงระดับบริการ และไม่แนะนําสําหรับปริมาณงานการผลิต คุณลักษณะบางอย่างอาจไม่ได้รับการสนับสนุนหรืออาจมีความสามารถที่จํากัด สําหรับข้อมูลเพิ่มเติม ให้ดู เงื่อนไขเพิ่มเติมของการใช้สําหรับการแสดงตัวอย่าง Microsoft Azure

ภาษา GQL สนับสนุนค่าชนิดต่าง ๆ เช่น ตัวเลข สตริง และองค์ประกอบกราฟ ค่าเหล่านี้จะถูกจัดระเบียบเป็นชุดที่เรียกว่าชนิดค่า ซึ่งกําหนดการดําเนินการที่คุณสามารถทําได้และวิธีที่ค่าทํางานในบริบทที่แตกต่างกัน การทําความเข้าใจเกี่ยวกับระบบชนิดเป็นสิ่งจําเป็นสําหรับการเขียนคิวรีที่ถูกต้องและหลีกเลี่ยงข้อผิดพลาดรันไทม์

แนวคิดหลัก:

  • ชนิดค่า อาจเป็น ค่าว่าง หรือ วัสดุ (ไม่ใช่ค่าว่างได้) ขึ้นอยู่กับว่ารวมหรือไม่รวมค่า Null
  • มีการระบุชนิดค่าที่ไม่ใช่ค่าว่างโดยใช้ไวยากรณ์เป็นNOT NULL
  • ค่าเดียวกัน สามารถเป็นของชนิดค่าหลายชนิด (โพลีมอฟิฟิก)
  • ค่า null เป็นสมาชิกของชนิดค่าที่สามารถเป็น null ได้ทุกชนิด

Note

ชนิดค่าทั้งหมดสามารถเป็นค่าว่างได้ตามค่าเริ่มต้น เว้นแต่จะมีการประกาศเป็น NOT NULLอย่างชัดเจน ตัวอย่างเช่น INT ระบุชนิดจํานวนเต็มที่สามารถเป็น null ได้ ในขณะที่ INT NOT NULL ระบุชนิดจํานวนเต็มของวัสดุ

วิธีการจัดระเบียบชนิดค่า

ชนิดค่าทั้งหมดแบ่งออกเป็นสองประเภทหลักซึ่งทําหน้าที่เพื่อวัตถุประสงค์ที่แตกต่างกันในคิวรีของคุณ:

  • ชนิดค่าที่กําหนดไว้ล่วงหน้า - สร้างขึ้นในภาษา (เช่น ตัวเลข สตริง และบูลีน)
  • ชนิดค่าที่สร้างขึ้น - ประกอบด้วยจากชนิดอื่น ๆ (รายการ เส้นทาง)

ชนิดค่าที่กําหนดไว้ล่วงหน้าจะถูกจัดเป็นประเภทเฉพาะเพิ่มเติม:

  • ชนิดค่าบูลีน - จริง เท็จ และค่าที่ไม่รู้จักสําหรับการดําเนินการเชิงตรรกะ
  • ชนิดค่าสตริงอักขระ - ข้อมูลข้อความที่มีการสนับสนุน Unicode
  • ชนิดค่าตัวเลข - จํานวนเต็มและตัวเลขทศนิยม
  • ชนิดค่าชั่วขณะ - ค่าวันที่และเวลาพร้อมการสนับสนุนโซนเวลา
  • ชนิดค่าอ้างอิง - การอ้างอิงถึงโหนดและขอบในกราฟของคุณ
  • ชนิดค่า Immaterial - ค่าพิเศษเช่น null และไม่มีสิ่งใด

ความเท่าเทียมกันและการเปรียบเทียบทํางานอย่างไร

การทําความเข้าใจวิธีการที่ GQL เปรียบเทียบค่าเป็นสิ่งสําคัญสําหรับการเขียนคิวรีที่มีประสิทธิภาพ โดยเฉพาะอย่างยิ่งเมื่อจัดการกับการกรอง การเรียงลําดับ และการรวม

กฎการเปรียบเทียบพื้นฐาน

  • โดยทั่วไปคุณสามารถเปรียบเทียบค่าของชนิดเดียวกันได้
  • ตัวเลขทั้งหมดสามารถเปรียบเทียบกันได้ (ตัวอย่างเช่น จํานวนเต็มที่มีเลขทศนิยม)
  • สามารถเปรียบเทียบได้เฉพาะค่าอ้างอิงที่อ้างอิงวัตถุชนิดเดียวกันเท่านั้น (การอ้างอิงโหนดกับการอ้างอิงโหนด การอ้างอิงขอบด้วยการอ้างอิงขอบ)

การจัดการ Null ในการเปรียบเทียบ

เมื่อคุณเปรียบเทียบค่าใดก็ตามกับ null ผลลัพธ์จะเป็น เสมอUNKNOWN การจัดการ Null เป็นไปตามหลักการตรรกะแบบสามค่า อย่างไรก็ตาม ORDER BY คําสั่งจะ NULL ถือว่าเป็นค่าที่น้อยที่สุดเมื่อทําการเรียงลําดับ ซึ่งให้ลักษณะการทํางานในการเรียงลําดับที่สามารถคาดการณ์ได้

ความแตกต่างกับความเท่ากัน

ข้อความบางข้อความไม่ได้ทดสอบความเท่ากัน แต่เพื่อความแตกต่าง การทําความเข้าใจความแตกต่างเป็นสิ่งสําคัญสําหรับการดําเนินการ เช่น DISTINCT และGROUP BY

การทดสอบความแตกต่างเป็นไปตามกฎเดียวกับความเท่ากันโดยมีข้อยกเว้นที่สําคัญหนึ่งข้อ: NULL ไม่แตกต่างจากNULL ความแตกต่างแตกต่างจากการทดสอบความเท่ากันที่เกี่ยวข้องกับ NULLซึ่งส่งผลต่อ เสมอในUNKNOWN

การทดสอบความแตกต่างถูกใช้โดย:

  • RETURN DISTINCT: กําหนดว่าสองแถวเป็นแถวที่ซ้ํากันของกันและกันหรือไม่
  • GROUP BY: กําหนดว่าสองแถวเป็นของคีย์การจัดกลุ่มเดียวกันในระหว่างการรวมหรือไม่

สองแถวจากตารางจะถือว่าแตกต่างกันถ้ามีอย่างน้อยหนึ่งคอลัมน์ที่ค่าจากทั้งสองแถวจะแตกต่างกัน

ชนิดค่าบูลีน

ค่าบูลีนเป็นค่าTRUEตรรกะสามค่า , FALSEและUNKNOWN

Note

UNKNOWN และค่า null เหมือนกัน UNKNOWNเป็นเพียงแค่ค่า null ของชนิดBOOL

วิธีการทํางานของความเท่าเทียมกัน:

ค่าด้านซ้าย ค่าขวา ผลลัพธ์
จริง เท็จ เท็จ
จริง จริง จริง
จริง ไม่คุ้นเคย ไม่คุ้นเคย
เท็จ เท็จ จริง
เท็จ จริง เท็จ
เท็จ ไม่คุ้นเคย ไม่คุ้นเคย
ไม่คุ้นเคย เท็จ ไม่คุ้นเคย
ไม่คุ้นเคย จริง ไม่คุ้นเคย
ไม่คุ้นเคย ไม่คุ้นเคย ไม่คุ้นเคย

วิธีการทํางานของการเปรียบเทียบ:

FALSEน้อยกว่าTRUE การเปรียบเทียบใดๆ ที่เกี่ยวข้องกับUNKNOWNผลลัพธ์ในUNKNOWN

วิธีการเขียนสัญพจน์บูลีน:

  • TRUE
  • FALSE
  • UNKNOWN หรือ NULL

ไวยากรณ์ของชนิด:

BOOL [ NOT NULL ]

ชนิดค่าสตริงของอักขระ

สตริงอักขระคือลําดับของจุดรหัส Unicode (อาจมีความยาวเป็นศูนย์) สตริงอักขระว่างไม่เหมือนกับค่า null

วิธีการทํางานของการเปรียบเทียบ:

สตริงอักขระจะถูกเปรียบเทียบโดยการเปรียบเทียบค่าสเกลาร์ Unicode ของจุดรหัสของพวกเขา (บางครั้งวิธีการเปรียบเทียบจะเรียกว่า UCS_BASIC การจัดเรียง)

วิธีการเขียนสัญพจน์สตริง:

ใส่อักขระของคุณในเครื่องหมายอัญประกาศคู่ (") หรืออัญประกาศเดี่ยว ('):

"Hello, World!"
'Guten Tag!'

คุณไม่สามารถระบุอักขระควบคุม Unicode บางตัวในสัญพจน์ของสตริงได้โดยตรง โดยเฉพาะอย่างยิ่ง ไม่อนุญาตให้ใช้อักขระทั้งหมดจากคลาสประเภททั่วไปของ Unicode "Cc" และ "Cn" แต่ใช้ C-style \-escapes แทน:

ข้อมูลป้อนเข้า อักขระที่ไม่ได้เลื่อนขึ้น
\\ \
\" "
\' '
\` `
\t U+0009
\b U+0008
\n U+000A
\r U+000D
\f U+000C
\uabcd U+ABCD
\UABCDEF01 U+ABCDEF01

นอกจากนี้ GQL ยังสนับสนุนการเลี่ยงโครงสร้างสไตล์ SQL ด้วยการเพิ่มอักขระและ"อักขระโดยรอบ'เป็น 2 เท่า:

สตริงจริง สไตล์ C สไตล์ SQL
วิธีการ "Ironic!" "How \"ironic!\"" "How ""ironic!"""
วิธีการ 'รีด!' 'How \'ironic!\'' 'How ''ironic!'''

เคล็ดลับ

ปิดใช้งาน C-style \-escapes โดยใส่คํานําหน้าสัญพจน์สตริงของคุณด้วย@

ไวยากรณ์ของชนิด:

STRING [ NOT NULL ]

ชนิดตัวเลข

ชนิดตัวเลขที่แน่นอน

Graph ใน Microsoft Fabric สนับสนุนจํานวนที่แน่นอนที่เป็นจํานวนเต็มลบหรือจํานวนเต็มบวก

วิธีการทํางานของการเปรียบเทียบ:

ระบบจะเปรียบเทียบตัวเลขทั้งหมดตามค่าตัวเลข

วิธีการเขียนสัญพจน์จํานวนเต็ม:

คำอธิบาย ตัวอย่าง ค่า
เลขจำนวนเต็ม 123456 123456
การจัดกลุ่มจํานวนเต็ม w 123_456 123456
จํานวนเต็มบวกอย่างชัดเจน +123456 123456
ศูนย์ 0 0
จํานวนเต็มลบ -123456 -123456

ไวยากรณ์ของชนิด:

INT [ NOT NULL ]
INT64 [ NOT NULL ]
UINT [ NOT NULL ]
UINT64 [ NOT NULL ]

INT และ INT64 ระบุชนิดตัวเลขเดียวกัน ดังนั้น ให้ทําUINTและUINT64

ชนิดตัวเลขโดยประมาณ

Graph ใน Microsoft Fabric สนับสนุนจํานวนโดยประมาณที่เป็น IEEE (สถาบันวิศวกรไฟฟ้าและอิเล็กทรอนิกส์) หมายเลขจุดทศนิยมลอยตัวที่เข้ากันได้กับ 754

วิธีการทํางานของการเปรียบเทียบ:

ระบบจะเปรียบเทียบตัวเลขทั้งหมดตามค่าตัวเลข

วิธีการเขียนสัญพจน์จุดทศนิยมลอยตัว:

คำอธิบาย ตัวอย่าง ค่า
สัญประกาศทั่วไป 123.456 123.456
การจัดกลุ่มสัญาตลักษณ์ทั่วไป 123_456.789 123456.789
สัญกรณ์วิทยาศาสตร์ 1.23456e2 123.456
สวรรคทางวิทยาศาสตร์ (ตัวพิมพ์ใหญ่) 1.23456E2 123.456
จุดทศนิยมพร้อมกับคําต่อท้าย 123.456f 123.456
ความแม่นยําสองเท่าด้วยคําต่อท้าย 123.456d 123.456

ข้อควรพิจารณาเกี่ยวกับตัวเลขเพิ่มเติม:

  • เกินและเกิน: การดําเนินการจํานวนเต็มที่เกินช่วงที่สนับสนุนอาจส่งผลให้เกิดข้อผิดพลาดรันไทม์หรือลักษณะการคลุมขึ้นอยู่กับการใช้งาน
  • ความแม่นยํา: การทํางานแบบจุดทศนิยมลอยตัวอาจสูญเสียความแม่นยําเนื่องจากข้อจํากัดการแสดง IEEE 754
  • ค่าเลขทศนิยมพิเศษ: NaN (ไม่ใช่ตัวเลข) ค่าอินฟินิตี้ด้านบวก (+∞) และค่าอนันต์เชิงลบ (-∞) อาจได้รับการสนับสนุนในบริบทจุดทศนิยมลอยตัว

ไวยากรณ์ของชนิด:

FLOAT [ NOT NULL ]
DOUBLE [ NOT NULL ]
FLOAT64 [ NOT NULL ]

DOUBLE, FLOATและ FLOAT64 ทั้งหมดระบุชนิดเดียวกัน

ชนิดค่าชั่วเวลา

ค่าวันที่เวลาที่มีเขต

ค่าวันที่เวลาแบบโซนแสดงวันที่เวลาที่เข้ากันได้กับ ISO 8601 พร้อมด้วยค่าชดเชยเขตเวลา

วิธีการทํางานของการเปรียบเทียบ:

ระบบจะเปรียบเทียบค่าวันที่เวลาที่อยู่เป็นโซนตามเวลาสัมบูรณ์ของพวกเขา

วิธีการเขียนสัญพจน์ datetime:

ใช้รูปแบบ ISO 8601 กับข้อมูลโซนเวลา:

ZONED_DATETIME('2024-08-15T14:30:00+02:00')
ZONED_DATETIME('2024-08-15T12:30:00Z')
ZONED_DATETIME('2024-12-31T23:59:59.999-08:00')

ไวยากรณ์ของชนิด:

ZONED DATETIME [ NOT NULL ]

ชนิดค่าอ้างอิง

ค่าอ้างอิงประกอบด้วยการอ้างอิงไปยังโหนดหรือขอบที่ตรงกัน

ค่าการอ้างอิงโหนด

ค่าอ้างอิงโหนดแสดงการอ้างอิงไปยังโหนดเฉพาะในกราฟของคุณ โดยทั่วไปคุณจะได้รับค่าเหล่านี้เมื่อมีการจับคู่โหนดในรูปแบบกราฟ และคุณสามารถใช้เพื่อเข้าถึงคุณสมบัติของโหนดและทําการเปรียบเทียบได้

วิธีการทํางานของการเปรียบเทียบ:

คุณควรเปรียบเทียบค่าอ้างอิงโหนดเพื่อความเท่าเทียมกันเท่านั้น ค่าการอ้างอิงโหนดสองรายการจะเท่ากัน หากและเฉพาะเมื่ออ้างอิงถึงโหนดเดียวกันเท่านั้น

Graph ใน Microsoft Fabric กําหนดลําดับแบบเชิงกําหนดสําหรับค่าอ้างอิง อย่างไรก็ตาม ลําดับนี้สามารถเปลี่ยนจากคิวรีเป็นคิวรี และไม่ควรพึ่งพาในคิวรีการผลิต

วิธีการเข้าถึงคุณสมบัติ:

ใช้สวรรคจุดเพื่อเข้าถึงคุณสมบัติของโหนด:

node_var.property_name

ชนิดโหนด Abstract ใน schema ของกราฟ:

เมื่อทํางานกับชนิดกราฟ คุณสามารถกําหนดชนิดโหนดนามธรรมที่ทําหน้าที่เป็นชนิดพื้นฐานสําหรับการสืบทอดแต่ไม่สามารถสร้างอินสแตนซ์ได้โดยตรง ชนิดบทคัดย่อเปิดใช้งานรูปแบบการคิวรีโพลีมอฟิก:

-- Abstract base type (cannot be instantiated)
ABSTRACT
(:Person => {
  id :: INT64,
  name :: STRING,
  birth_date :: ZONED DATETIME
}),

-- Concrete types that inherit from abstract base
(:Employee => Person {
  employee_id :: STRING,
  department :: STRING,
  hire_date :: ZONED DATETIME
})

(:Customer => :Person {
  customer_id :: STRING,
  membership_level :: STRING,
  registration_date :: ZONED DATETIME
})

คิวรี่โพลีมอฟิกที่มีชนิดนามธรรม:

ชนิด Abstract เปิดใช้งานรูปแบบการคิวรีที่มีประสิทธิภาพที่คุณสามารถจับคู่กับชนิดพื้นฐานเพื่อค้นหาอินสแตนซ์ทั้งหมดของชนิดที่ได้รับมา:

-- Find all Person instances (both Employee and Customer)
MATCH (p:Person)
RETURN p.name, p.birthday, labels(p) AS label_names

-- Mixed type patterns
MATCH (e:Employee)-[:knows]-(c:Customer)
WHERE e.department = 'Sales' AND c.membership_level = 'Premium'
RETURN e.name AS sales_person, c.name AS customer

Note

แบบสอบถามก่อนหน้านี้ถือว่าชนิดกราฟที่ร่างไว้ข้างต้น และไม่ใช้ชุดข้อมูลตัวอย่างเครือข่ายสังคม

วิธีนี้ให้ความปลอดภัยประเภทในขณะที่เปิดใช้งานการสร้างแบบจําลองข้อมูลแบบยืดหยุ่นตามการสืบทอดใน Schema ของกราฟของคุณ

ไวยากรณ์ของชนิด:

NODE [ NOT NULL ]

ค่าการอ้างอิงขอบกราฟ

ค่าอ้างอิงขอบกราฟแสดงการอ้างอิงถึงขอบที่เฉพาะเจาะจงในกราฟของคุณ โดยทั่วไปคุณจะได้รับค่าเหล่านี้เมื่อมีการจับคู่ขอบในรูปแบบกราฟ และคุณสามารถใช้เพื่อเข้าถึงคุณสมบัติขอบและทําการเปรียบเทียบได้

วิธีการทํางานของการเปรียบเทียบ:

คุณสามารถเปรียบเทียบค่าอ้างอิงขอบสําหรับความเท่ากันเท่านั้น ค่าการอ้างอิงขอบสองค่าจะเท่ากัน หากและเฉพาะเมื่ออ้างอิงขอบเดียวกันเท่านั้น

วิธีการเข้าถึงคุณสมบัติ:

ใช้สปอตเพื่อเข้าถึงคุณสมบัติขอบ:

edge_var.property_name

ไวยากรณ์ของชนิด:

EDGE [ NOT NULL ]

ชนิดค่า Immaterial

ชนิดค่าไม่ประกอบด้วยค่าวัสดุ "ธรรมดา"

ค่า Null

ค่า null แสดงถึงการขาดหายไปของค่าวัสดุที่รู้จัก ซึ่งเป็นสมาชิกของชนิดค่าที่สามารถเป็น Null ได้และแตกต่างจากค่าวัสดุใด ๆ ซึ่งเป็นค่าเดียวของชนิด null

วิธีการทํางานของการเปรียบเทียบ:

เมื่อคุณเปรียบเทียบค่าใดก็ตามกับ null ผลลัพธ์คือUNKNOWN

วิธีการเขียนสัญพจน์ null:

NULL        -- type NULL
UNKNOWN     -- type BOOL

ไวยากรณ์ของชนิด:

NULL

ชนิดไม่มีสิ่งใด

ชนิดค่าไม่ใช่ชนิดค่าที่ไม่มีค่า

แม้ว่าอาจดูเหมือนเป็นทางเทคนิค แต่ไม่มีชนิดใดที่ช่วยให้คุณสามารถกําหนดชนิดที่แม่นยําให้กับค่าเช่นค่ารายการว่างได้ ชนิดไม่มีสิ่งใดที่ช่วยให้คุณสามารถส่งผ่านรายการที่ว่างเปล่าที่ใดก็ตามที่ต้องการชนิดค่ารายการ (โดยไม่คํานึงถึงชนิดองค์ประกอบของรายการที่ต้องการ)

ไวยากรณ์ของชนิด:

NOTHING
NULL NOT NULL

(NOTHING และ NULL NOT NULL ระบุชนิดเดียวกัน)

ชนิดค่าที่สร้างขึ้น

ค่ารายการ

ค่ารายการคือลําดับขององค์ประกอบ รายการสามารถมีองค์ประกอบชนิดเดียวกันและสามารถรวมค่า Null ได้

สําคัญ

ในปัจจุบัน รายการใน graph ใน Microsoft Fabric ไม่สามารถมีองค์ประกอบของชนิดผสมได้

วิธีการทํางานของการเปรียบเทียบ:

รายการจะถูกเปรียบเทียบกันก่อนตามขนาด จากนั้นองค์ประกอบตามองค์ประกอบตามลําดับ รายการสองรายการจะเท่ากันหากพวกเขามีขนาดเท่ากันและองค์ประกอบที่สอดคล้องกันทั้งหมดจะเท่ากัน

เคล็ดลับ

การเปรียบเทียบที่เกี่ยวข้องกับค่าองค์ประกอบ null จะส่งผลเสมอในUNKNOWN การเปรียบเทียบ Null อาจนําไปสู่ผลลัพธ์ที่น่าประหลาดใจเมื่อเปรียบเทียบค่ารายการ!

รายการกลุ่ม:

รายการกลุ่มคือรายการที่ผูกไว้ตามรูปแบบขอบความยาวตัวแปรที่ตรงกัน Graph ใน Microsoft Fabric จะติดตามสถานะเป็นรายการกลุ่ม

รายการกลุ่มสามารถใช้ในการรวมแนวนอน สําหรับข้อมูลเพิ่มเติม โปรดดูนิพจน์ GQL และฟังก์ชัน

วิธีการเขียนสัญพจน์รายการ:

ใช้เครื่องหมายวงเล็บสี่เหลี่ยมเพื่อสร้างรายการ:

[1, 2, 3, 4]
['hello', 'world']
[1, 'mixed', TRUE, NULL]
[]  -- empty list

วิธีการเข้าถึงองค์ประกอบ:

ใช้วงเล็บสี่เหลี่ยมที่มีการจัดทําดัชนีตามศูนย์เพื่อเข้าถึงองค์ประกอบรายการ:

list_var[0]  -- first element
list_var[1]  -- second element

การดําเนินการรายการทั่วไป:

-- Check if list contains a value
WHERE 'Engineering' IN employee.departments

-- List concatenation
RETURN [1, 2] || [3, 4]  -- [1, 2, 3, 4]

-- List size
size(list_var)

ไวยากรณ์ของชนิด:

LIST<element_type> [ NOT NULL ]
LIST<element_type NOT NULL> [ NOT NULL ]

โดย element_type ที่สามารถเป็นประเภทที่รองรับใด ๆ เช่น STRING, INT64, DOUBLE, BOOL และอื่น ๆ

ค่าเส้นทาง

ค่าเส้นทางแสดงเส้นทางที่ตรงกับกราฟของคุณ ค่าเส้นทางประกอบด้วยลําดับที่ไม่ทั่วไปของโหนดสลับและค่าการอ้างอิงขอบที่เริ่มต้นและลงท้ายด้วยค่าการอ้างอิงโหนดเสมอ ค่าอ้างอิงเหล่านี้ระบุโหนดและขอบของเส้นทางที่ตรงกันดั้งเดิมในกราฟของคุณ

วิธีจัดโครงสร้างเส้นทาง:

เส้นทางประกอบด้วย:

  • ลําดับของโหนดและขอบ: node₁ - edge₁ - node₂ - edge₂ - ... - nodeₙ
  • เริ่มต้นและลงท้ายด้วยโหนดเสมอ
  • มีโหนดอย่างน้อยหนึ่งโหนด (ความยาวของเส้นทางต่ําสุดคือขอบศูนย์)

Note

ไวยากรณ์สัญพจน์สําหรับเส้นทางยังไม่ได้รับการสนับสนุน แต่สามารถผูกเส้นทางโดยใช้ MATCH pathVar=...path pattern...ได้

วิธีการทํางานของการเปรียบเทียบ:

เส้นทางจะถูกเปรียบเทียบโดยการเปรียบเทียบรายการค่าอ้างอิงกับโหนดและขอบที่เป็นส่วนประกอบทั้งหมดตามลําดับที่เกิดขึ้นตามเส้นทาง

ดูกฎการเปรียบเทียบสําหรับ ค่ารายการ และ ค่าอ้างอิง สําหรับรายละเอียดเพิ่มเติม

ไวยากรณ์ของชนิด:

PATH [ NOT NULL ]

การแปลงประเภทและการคัดเลือก

GQL สนับสนุนการแปลงประเภทโดยนัยและแบบชัดเจนเพื่อเปิดใช้งานการทํางานที่ยืดหยุ่นในขณะที่รักษาความปลอดภัยของประเภท

การแปลงโดยนัย

ประเภทค่าบางชนิดสามารถแปลงโดยปริยายได้เมื่อการแปลงมีความปลอดภัยและไม่สูญเสียข้อมูล:

  • การปรับตัวเลขให้กว้าง: ค่าจํานวนเต็มสามารถแปลงโดยนัยเป็นชนิดจุดทศนิยมลอยตัวเมื่อใช้ในการดําเนินการทางคณิตศาสตร์แบบผสมได้
  • บริบทสตริง: ค่าอาจถูกแปลงเป็นสตริงในบางบริบทเช่น การดําเนินการเรียงต่อกันโดยนัย

การคัดเลือกแบบชัดเจน

CASTใช้ฟังก์ชัน เพื่อแปลงค่าระหว่างชนิดที่เข้ากันได้อย่างชัดเจน:

CAST(value AS target_type)

ตัวอย่าง:

CAST(123 AS STRING)           -- "123"
CAST('456' AS INT64)          -- 456
CAST(3.14 AS STRING)          -- "3.14"
CAST('true' AS BOOL)          -- TRUE

กฎการแคสต์:

  • ไปยัง STRING: ประเภทค่าส่วนใหญ่สามารถแปลงเป็น STRING ด้วยการแทนค่าสัญพจน์
  • เป็นชนิดตัวเลข: สตริงที่มีสัญพจน์ตัวเลขที่ถูกต้องสามารถแปลงเป็นชนิดตัวเลขที่เหมาะสมได้
  • ไปยัง BOOL: สตริง 'จริง'/'เท็จ' (ตรงตามตัวพิมพ์ใหญ่-เล็ก) สามารถแคสต์เป็นค่าบูลีนได้
  • แคสต์ไม่ถูกต้อง: การพยายามแปลงค่าที่เข้ากันไม่ได้ส่งผลให้เกิดข้อผิดพลาดในรันไทม์