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

MySQL: แสดงเฉพาะแถวที่คอลัมน์เป็น Whitespace หรือ Empty

การตรวจสอบค่า Whitespace/Empty ด้วย TRIM และ COALESCE

ใช้ TRIM() ตัดช่องว่างหน้า/หลัง แล้ว COALESCE() จัดการ NULL แล้วเทียบกับ Empty String

ตัวอย่าง

mysql> create table DemoTable826(
    FirstName varchar(100),
    Age int );
Query OK, 0 rows affected (0.60 sec)
mysql> insert into DemoTable826 values(' ', 24);
mysql> insert into DemoTable826 values(' ', 22);
mysql> insert into DemoTable826 values('Chris', 26);
mysql> insert into DemoTable826 values('Robert', 27);

คำสั่งค้นหาแถวที่ FirstName เป็น Whitespace/Empty/NULL

mysql> select * from DemoTable826 
where COALESCE(TRIM(FirstName), '') = '';

ผลลัพธ์:

+-----------+------+
| FirstName | Age  |
+-----------+------+
|           | 24   |
|           | 22   |
+-----------+------+

คำอธิบาย

  1. TRIM(FirstName) - ตัด Space/Tab/Newline หน้าและหลัง (NULL ยังคงเป็น NULL)
  2. COALESCE(..., '') - แปลง NULL เป็น Empty String ''
  3. = '' - เปรียบเทียบว่าหลัง Trim แล้วว่างเปล่าหรือไม่

กรณีอื่นๆ

-- หาเฉพาะ NULL
WHERE FirstName IS NULL

-- หาเฉพาะ Empty String ('')
WHERE FirstName = ''

-- หา Whitespace (Space, Tab, Newline)
WHERE TRIM(FirstName) = '' AND FirstName IS NOT NULL

-- ทั้งหมด (NULL, '', ' ', '\t', '\n')
WHERE COALESCE(TRIM(FirstName), '') = ''

สรุป

ใช้ WHERE COALESCE(TRIM(col), '') = '' จับได้ทั้ง NULL, Empty String, และ Whitespace เท่านี้