ใน MySQL ไม่สามารถทำให้ไคลเอนต์เก็บตัวแปรผู้ใช้ได้อย่างถาวร เนื่องจากตัวแปรทั้งหมดสำหรับการเชื่อมต่อไคลเอนต์ที่กำหนดจะถูกปลดปล่อยอัตโนมัติเมื่อไคลเอนต์ออกจากระบบ
ใน MySQL ไม่สามารถทำให้ไคลเอนต์เก็บตัวแปรผู้ใช้ได้อย่างถาวร เนื่องจากตัวแปรทั้งหมดสำหรับการเชื่อมต่อไคลเอนต์ที่กำหนดจะถูกปลดปล่อยอัตโนมัติเมื่อไคลเอนต์ออกจากระบบ
เราต้องใช้เครื่องหมายคำพูดกับคำสงวนเพื่อใช้เป็นตัวระบุ เครื่องหมายคำพูดอาจเป็นเดี่ยวหรือคู่ ขึ้นอยู่กับโหมด SQL ANSI_QUOTES หากโหมดนี้ปิดอยู่ ตัวระบุจะใช้แบ็กทิก (`) ตัวอย่างสร้างตารางชื่อ select: mysql> CREATE TABLE `select`(id INT); Query OK, 0 rows affected (0.19 sec) หากโหมดนี้เปิดอยู่ สามารถ
วัตถุบางอย่างใน MySQL เรียกว่า identifiers (ตัวระบุ) รวมถึง database, table, index, column, alias, view, stored procedure, partition, tablespace เป็นต้น Identifiers ถูกจัดเก็บด้วย Unicode (UTF-8) ความยาวสูงสุดของแต่ละประเภทตัวระบุแสดงในตารางต่อไปนี้: ลำดับตัวระบุ (Identifier)ความยาวสูงสุด (ตัวอักษ
ในกรณีที่สตริงย่อยปรากฏมากกว่าหนึ่งครั้งในสตริง ฟังก์ชัน MySQL LOCATE() จะคืนค่าตำแหน่งของการปรากฏครั้งแรกของสตริงย่อย ตัวอย่าง mysql> SELECT LOCATE(good, Ram is a good boy. Is Ram a good boy?) AS Result; +--------+ | Result | +--------+ | 10 | +--------+ 1 row in set (0.00 sec) สตริงย่อย goo
เนื่องจากค่า ENUM เชื่อมโยงกับค่าดัชนี หากเราใช้ค่า ENUM ในนิพจน์ การคำนวณทั้งหมดจะทำบนหมายเลขดัชนี ตัวอย่างต่อไปนี้จะชี้แจง: mysql> SELECT * FROM Result; +-----+--------+-------+ | Id | Name | Grade | +-----+--------+-------+ | 100 | Gaurav | GOOD | | 101 | Rahul | POOR | | 102 | Rahul |
ฟังก์ชัน MySQL ELT() คืนค่า NULL หากหมายเลขดัชนีที่ส่งเป็นอาร์กิวเมนต์น้อยกว่า 1 ตัวอย่างต่อไปนี้จะชี้แจง: ตัวอย่าง mysql> SELECT ELT(0, Ram, is, a, good, boy) AS Result; +--------+ | Result | +--------+ | NULL | +--------+ 1 row in set (0.00 sec) mysql> SELECT ELT(-1, Ram, is, a, good, boy)
ตามที่ทราบ อาร์กิวเมนต์แรกของ ELT() ต้องเป็นค่าจำนวนเต็ม แต่เมื่อเราระบุดัชนีที่ไม่ใช่จำนวนเต็ม ฟังก์ชัน MySQL ELT() จะคืนค่า NULL พร้อมคำเตือน ตัวอย่าง mysql> SELECT ELT(one, Ram,is,good,boy) AS Result; +--------+ | Result | +--------+ | NULL | +--------+ 1 row in set, 1 warning (0.00 sec) mys
ฟังก์ชันนี้เป็นฟังก์ชันสตริงของ MySQL ใช้สำหรับค้นหา ด้วยไวยากรณ์ของ EXPORT_SET() เราสามารถเข้าใจการทำงานได้: ไวยากรณ์ EXPORT_SET(bits, on, off, separator, number_of_bits) ในไวยากรณ์นี้: bits (ได้จากการแปลงจำนวนเต็มเป็นบิต) จะถูกเปรียบเทียบว่าเป็น 1 หรือ 0 on คืออาร์กิวเมนต์ที่ 2 มีค่าในเครื่องหมาย
ฟังก์ชัน MySQL EXPORT_SET() จะคืนค่า NULL หากอาร์กิวเมนต์ใดๆ ที่ส่งให้เป็น NULL ตัวอย่างต่อไปนี้จะสาธิต: ตัวอย่าง mysql> SELECT EXPORT_SET(NULL, Y, N, ,, 4); +----------------------------------+ | EXPORT_SET(NULL, Y, N, ,, 4) | +----------------------------------+ | NULL
MySQL จัดเก็บค่า ENUM ภายในเป็นคีย์จำนวนเต็ม (หมายเลขดัชนี) เพื่ออ้างอิงสมาชิก ENUM เหตุผลหลักที่ไม่ควรเก็บค่าตัวเลขในคอลัมน์ ENUM คือ MySQL จะอ้างอิงถึงดัชนีแทนค่า และในทางกลับกัน ตัวอย่าง ตัวอย่างต่อไปนี้ชี้แจงได้: mysql> CREATE TABLE enmtest(Val ENUM(0,1,2)); Query OK, 0 rows affected (0.18 se
เราสามารถทำได้ด้วยแอตทริบิวต์ DEFAULT ของชนิดข้อมูล ENUM แอตทริบิวต์ DEFAULT ทำให้ ENUM มีค่าเริ่มต้นเมื่อไม่ระบุค่า กล่าวคือ คำสั่ง INSERT ไม่ต้องรวมค่าสำหรับฟิลด์นี้ เพราะหากไม่รวม ค่าที่อยู่หลัง DEFAULT จะถูกแทรก ฟังก์ชันไม่ได้รับอนุญาตในนิพจน์ DEFAULT สำหรับ ENUM ค่า DEFAULT ที่อนุญาตคือ NULL แล
ค่าเริ่มต้นของอาร์กิวเมนต์ที่ 5 (จำนวนบิต) คือ 64 ดังนั้น หากไม่ระบุค่าในอาร์กิวเมนต์ที่ 5 MySQL จะตรวจสอบบิตสูงสุด 64 บิตและสร้างผลลัพธ์ สามารถเข้าใจได้จากตัวอย่างต่อไปนี้: ตัวอย่าง mysql> SELECT EXPORT_SET(5, Y, N, )\G *************************** 1. row *************************** EXPORT_SET(5
ข้อจำกัดของ MySQL ENUMs มีดังนี้: 1. ค่า ENUM ไม่สามารถเป็นนิพจน์ (expression) ได้ ไม่สามารถใช้นิพจน์เป็นสมาชิกการแจงนับได้ แม้จะคำนวณได้เป็นสตริง ตัวอย่าง ตัวอย่างเช่น ใช้ฟังก์ชัน CONCAT ซึ่งคำนวณได้เป็นสตริง คิวรีต่อไปนี้จะไม่ทำงาน: mysql> CREATE TABLE limit_enum(number ENUM(one, two, CONCAT(t,
เนื่องจากค่าเริ่มต้นของอาร์กิวเมนต์ที่ 5 (จำนวนบิต) คือ 64 ดังนั้น หากไม่ระบุค่าในอาร์กิวเมนต์ที่ 5 MySQL จะตรวจสอบบิตสูงสุด 64 บิตและสร้างผลลัพธ์ ส่วนการข้ามอาร์กิวเมนต์ที่ 4 (ตัวคั่น) MySQL จะใช้เครื่องหมายจุลภาค (,) เป็นตัวคั่นในการแสดงผล ตัวอย่าง mysql> SELECT EXPORT_SET(8, Y, N)\G **********
MySQL ยอมรับค่าว่างสำหรับการแจงนับ (ENUM) ก็ต่อเมื่อโหมด SQL ไม่ได้ตั้งค่าเป็น TRADITIONAL, STRICT_TRANS_TABLES หรือ STRICT_ALL_TABLES มิฉะนั้น MySQL จะไม่ยอมรับค่าว่างและโยนข้อผิดพลาด เนื่องจากแต่ละค่า ENUM มีค่าดัชนี ค่าว่างจะมีค่าดัชนีเป็น 0 ตัวอย่าง mysql> SET SQL_MODE = Traditional; Query OK
หากโหมด SQL สтриงค์ (strict SQL mode) ปิดอยู่ และเราแทรกค่าที่ไม่ถูกต้อง (ซึ่งไม่อยู่ในรายการค่าที่อนุญาตของ ENUM) ลงใน ENUM แล้ว MySQL จะแทรกสตริงว่างแทนการโยนข้อผิดพลาด แต่หากโหมด SQL สтриงค์เปิดอยู่ MySQL จะโยนข้อผิดพลาดเมื่อแทรกค่าไม่ถูกต้อง ตัวอย่าง หลังจากปิดโหมด SQL สтриงค์ เราแทรกสตริงที่ไม่
จะมีการเปลี่ยนแปลงอย่างมีนัยสำคัญในผลลัพธ์ หากมีการผสม NULL และค่าอื่นๆ ในรายการสตริงที่ส่งเป็นอาร์กิวเมนต์ในฟังก์ชัน FIELD() ตัวอย่างต่อไปนี้จะสาธิต: ตัวอย่าง mysql> SELECT FIELD(good, Ram, is, good, boy); +---------------------------------------+ | FIELD(good, Ram, is, good, boy) | +-----------
ฟังก์ชัน FIND_IN_SET() ใช้ค้นหาสตริงที่ระบุจากรายการสตริง โดยพื้นฐานแล้วคืนค่าตำแหน่งของสตริง หากมีอยู่ (เป็น substring) ภายในรายการสตริง ไวยากรณ์ FIND_IN_SET(Search_String, string_list) โดยที่ Search_String คือสตริงที่ต้องการค้นหา และ string_list คือสตริงที่มี substring คั่นด้วยเครื่องหมายจุลภาค ตั
เมื่อใช้ FIND_IN_SET() ใน WHERE clause ฟังก์ชันจะค้นหาสตริงค้นหาภายในสตริงที่ระบุในอาร์กิวเมนต์ และดึงคอลัมน์ทั้งหมดจากแถวที่เกี่ยวข้อง ตัวอย่างต่อไปนี้สาธิตแนวคิดนี้: ตัวอย่าง ในตัวอย่างนี้ เราดึงคอลัมน์จากตาราง Student โดยที่แถวมีค่า name เป็น Gaurav ฟังก์ชัน FIND_IN_SET() จะค้นหาสตริง Gaurav จากค
ฟังก์ชัน FIND_IN_SET() คืนค่า NULL หากอาร์กิวเมนต์ใดเป็น NULL ไม่ว่าจะเป็นสตริงค้นหาหรือรายการสตริง ทั่วไปแล้ว จะคืน NULL ด้วยหากทั้งสองอาร์กิวเมนต์เป็น NULL ตัวอย่าง mysql> SELECT FIND_IN_SET(NULL, Ram is a good boy) AS Result; +--------+ | Result | +--------+ | NULL | +--------+ 1 row in set