Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> MySQL

การเก็บสตริงในตัวแปรและต่อสตริงแสดงในคอลัมน์เดียว MySQL

ใน MySQL สามารถเก็บค่าสตริงในตัวแปรผู้ใช้ (User-defined Variable) และใช้ฟังก์ชัน CONCAT_WS() เพื่อต่อสตริงหลายคอลัมน์ด้วยตัวคั่นที่กำหนด แล้วแสดงผลในคอลัมน์เดียว

ตัวอย่างการใช้งาน

สร้างตารางลูกค้า:

mysql> CREATE TABLE DemoTable1433 (
    -> ClientId INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
    -> ClientFirstName VARCHAR(20),
    -> ClientLastName VARCHAR(20)
    -> );

เพิ่มข้อมูล:

mysql> INSERT INTO DemoTable1433 (ClientFirstName, ClientLastName) VALUES ('David', 'Miller');

ดูข้อมูล:

mysql> SELECT * FROM DemoTable1433;
+----------+-----------------+----------------+
| ClientId | ClientFirstName | ClientLastName |
+----------+-----------------+----------------+
|        1 | David           | Miller         |
+----------+-----------------+----------------+

เก็บสตริงที่ต่อแล้วในตัวแปร @concat_variable:

mysql> SET @concat_variable := (SELECT CONCAT_WS('-', ClientFirstName, ClientLastName) FROM DemoTable1433);

แสดงค่าตัวแปร:

mysql> SELECT @concat_variable;
+------------------+
| @concat_variable |
+------------------+
| David-Miller     |
+------------------+

ความแตกต่างระหว่าง CONCAT และ CONCAT_WS

ฟังก์ชันคำอธิบายตัวอย่าง
CONCAT(str1, str2, ...)ต่อสตริงโดยตรง ไม่มีตัวคั่นCONCAT('A', 'B') → 'AB'
CONCAT_WS(separator, str1, str2, ...)ต่อสตริงพร้อมตัวคั่น (WS = With Separator) ข้ามค่า NULLCONCAT_WS('-', 'A', 'B') → 'A-B'

การใช้งานเพิ่มเติม

  • ต่อหลายคอลัมน์: CONCAT_WS(' ', FirstName, MiddleName, LastName)
  • จัดการค่า NULL: CONCAT_WS จะข้ามค่า NULL อัตโนมัติ (แตกต่างจาก CONCAT ที่จะคืนค่า NULL หากมีค่า NULL ใดๆ)
  • ใช้ใน SELECT โดยตรง: SELECT CONCAT_WS('-', FirstName, LastName) AS FullName FROM Users

วิธีนี้เหมาะสำหรับการสร้างชื่อเต็ม, รหัสสินค้า, หรือข้อความรวมจากหลายคอลัมน์