User-Defined Variables (@var) และ CONCAT_WS ใน SELECT
MySQL รองรับ User-Defined Variables เริ่มต้นด้วย @ สามารถกำหนดค่าและใช้ใน Query เดียวกันได้ ใช้ CONCAT_WS() รวมสตริงด้วย Separator (ข้าม NULL อัตโนมัติ)
สร้างตารางและข้อมูล
mysql> CREATE TABLE DemoTable1508 (
-> StudentFirstName VARCHAR(20),
-> StudentLastName VARCHAR(20)
-> );
Query OK, 0 rows affected (0.55 sec)
mysql> INSERT INTO DemoTable1508 VALUES
-> ('Chris', 'Brown'), ('David', 'Miller'), ('John', 'Doe');
Query OK, 3 rows affected
คำสั่ง: กำหนด @FullName และแสดงใน Result Set
mysql> SELECT @FullName := CONCAT_WS('-', StudentFirstName, StudentLastName)
-> FROM DemoTable1508;
ผลลัพธ์
+------------------------------------------------------------+
| @FullName:=concat_ws('-',StudentFirstName,StudentLastName) |
+------------------------------------------------------------+
| Chris-Brown |
| David-Miller |
| John-Doe |
+------------------------------------------------------------+
คำอธิบาย
@FullName := ...- Assignment Operator กำหนดค่าให้ Variable และคืนค่าที่กำหนดCONCAT_WS('-', col1, col2)- Concatenate With Separator: รวม col1, col2 ด้วย '-' ข้าม NULL ได้- Variable จะเก็บค่าของแถวสุดท้ายหลัง Query จบ (ในที่นี้คือ 'John-Doe')
ความแตกต่าง: := vs =
| Operator | บริบท | ตัวอย่าง |
|---|---|---|
:= | Assignment ใน SQL Statement (SELECT, UPDATE, dll) | SELECT @x := 1 |
= | Assignment ใน SET Statement หรือ Comparison | SET @x = 1 หรือ WHERE @x = 1 |