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

แปลงตัวอักษรเฉพาะตัวเป็น Uppercase ใน MySQL ด้วย REPLACE

การเตรียมข้อมูล

mysql> CREATE TABLE DemoTable1897 (Name VARCHAR(20));

mysql> INSERT INTO DemoTable1897 VALUES('john'), ('Chris'), ('jace'), ('David'), ('Chris');

แปลง 'j' เป็น 'J' ด้วย REPLACE

mysql> SELECT REPLACE(Name, 'j', 'J') FROM DemoTable1897;

ผลลัพธ์:

+-----------------------+
| replace(Name,'j','J') |
+-----------------------+
| John                  |
| Chris                 |
| Jace                  |
| David                 |
| Chris                 |
+-----------------------+

REPLACE Function

REPLACE(str, from_str, to_str)
-- แทนที่ทุกครั้งที่พบ from_str ด้วย to_str

ข้อจำกัดของ REPLACE

  • Case-Sensitive: 'j' ≠ 'J'
  • แทนที่ทุก Occurrence: REPLACE('juju', 'j', 'J') = 'JuJu'
  • ไม่ใช่ "ตัวแรกของคำ" แตกต่างจาก Proper Case/Title Case

ฟังก์ชันจัดรูปแบบตัวอักษรอื่นๆ

Title Case ใน MySQL (Custom)

-- Simple: First char only
SELECT CONCAT(UPPER(SUBSTRING(Name,1,1)), LOWER(SUBSTRING(Name,2))) FROM DemoTable1897;

-- Function สำหรับ Title Case (ทุกคำ)
CREATE FUNCTION TITLE_CASE(str VARCHAR(255)) RETURNS VARCHAR(255)
BEGIN
    DECLARE result VARCHAR(255) DEFAULT '';
    DECLARE word VARCHAR(255);
    DECLARE i INT DEFAULT 1;
    -- Loop through words...
    RETURN result;
END;

Regular Expression (MySQL 8.0+)

-- แปลงตัวแรกของแต่ละคำเป็น Uppercase
SELECT REGEXP_REPLACE(LOWER(Name), '(^|[^a-zA-Z])([a-zA-Z])', UPPER('$2')) 
FROM DemoTable1897;
ฟังก์ชันคำอธิบายตัวอย่าง
UPPER() / UCASE()ทั้งหมดเป็นพิมพ์ใหญ่UPPER('john') = 'JOHN'
LOWER() / LCASE()ทั้งหมดเป็นพิมพ์เล็กLOWER('JOHN') = 'john'
UPPER(SUBSTRING(str,1,1)) + LOWER(SUBSTRING(str,2))Title Case (First Letter)'john' → 'John'
INITCAP() (Oracle) / MySQL: Custom Functionทุกคำตัวแรกพิมพ์ใหญ่'john doe' → 'John Doe'