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

บทความนี้มีการอ้างอิงที่ครอบคลุมสําหรับค่า GQL และชนิดค่าในกราฟใน Microsoft Fabric

ภาษา 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 ]

ชนิดตัวเลข

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

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

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

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

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

คำอธิบาย ตัวอย่าง ค่า
เลขจำนวนเต็ม 123456 123456
จํานวนเต็มที่มีการจัดกลุ่ม 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 สนับสนุนตัวเลขโดยประมาณที่เป็น 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 กําหนดลําดับแบบเชิงกําหนดเหนือค่าอ้างอิง อย่างไรก็ตาม ลําดับนี้สามารถเปลี่ยนจากคิวรีเป็นคิวรี และคุณไม่ควรพึ่งพาคิวรีการผลิต

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

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

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 และทําการเปรียบเทียบได้

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

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

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

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

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 ได้

สําคัญ

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

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

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

เคล็ดลับ

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

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

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

คุณสามารถใช้รายการกลุ่มในการรวมแนวนอน สําหรับข้อมูลเพิ่มเติม โปรดดูนิพจน์ 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

คุณสามารถสร้างค่าเส้นทางด้วย PATH [node, edge, node] ไวยากรณ์หรือเส้นทางการผูกกับ 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: คุณสามารถแคสต์สตริง "จริง" หรือ "เท็จ" (ไม่ไวต่อตัวพิมพ์เล็ก-ใหญ่) เป็นค่าบูลีนได้
  • แคสต์ไม่ถูกต้อง: หากคุณพยายามแปลงค่าที่เข้ากันไม่ได้ ข้อผิดพลาดรันไทม์จะเกิดขึ้น