รายการฟังก์ชันสตริง
ฟังก์ชันมากกว่าวันที่และเวลา - เฉพาะประเภทสตริง ซึ่งใน SQL กำหนดโดยประเภท CHAR(n) และ VARCHAR(n) จำความนิยมมากที่สุดของพวกเขา:
การทำงาน | คำอธิบาย | |
---|---|---|
1 | ความยาว (str) | ส่งกลับความยาวของสตริงที่ผ่านเป็นไบต์ |
2 | CHAR_LENGTH(สตริ) | ส่งกลับความยาวของสตริงที่ผ่านเป็นตัวอักษร |
3 | ค้นหา (substr, str), | ค้นหาสตริงย่อยในสตริงที่คล้ายกับเมธอด indexOf() |
4 | ค้นหา (substr, str, pos) | ค้นหาสตริงย่อยในสตริงที่เริ่มต้นที่ตำแหน่ง |
5 | CONCAT(str1,str2,...) | เชื่อมต่อหลายบรรทัด |
6 | ซับสตริง(), ซับสตริง() | ส่งกลับสตริงย่อยที่กำหนดโดยช่วงของอักขระ |
7 | ล่าง(str) | แปลงสตริงเป็นตัวพิมพ์เล็ก |
8 | บน(str) | แปลงสตริงเป็นตัวพิมพ์ใหญ่ |
9 | แทนที่() | แทนที่สตริงย่อยในสตริง |
10 | จับคู่() | ตรวจสอบว่าสตริงตรงกับรูปแบบที่กำหนดหรือไม่ |
สิบเอ็ด | ทริม(str) | ตัดทอนอักขระว่างที่จุดเริ่มต้นและจุดสิ้นสุดของสตริง |
12 | LTRIM(สตริ) | ตัดทอนอักขระว่างที่จุดเริ่มต้นของสตริง |
13 | RTRIM(สตริ) | ตัดทอนอักขระว่างที่ส่วนท้ายของสตริง |
14 | TO_BASE64(สตริ) | แปลงสตริงเป็น Base64 |
15 | FROM_BASE64(สตริ) | แปลงสตริงจาก Base64 |
ฉันตั้งใจจัดกลุ่มฟังก์ชันออกเป็นกลุ่มเล็กๆ เพื่อให้เข้าใจวิธีการทำงานกับฟังก์ชันเหล่านี้ได้ง่ายขึ้น ด้านล่างเราจะพิจารณาหนึ่งฟังก์ชันจากแต่ละกลุ่ม คุณสามารถดูรายการฟังก์ชันทั้งหมดสำหรับการทำงานกับสตริงได้ในเอกสารทางการ
มาแปลงสตริงกันเถอะ
ก่อนอื่นมาจัดการกับฟังก์ชันที่ง่ายที่สุดที่เพียงแค่แปลงสตริงเป็นรูปแบบที่แตกต่างกันเล็กน้อย ตัวอย่างเช่น แปลงสตริงเป็นตัวพิมพ์ใหญ่และตัวพิมพ์เล็ก โดยทั่วไปลักษณะการทำงานจะคล้ายกับฟังก์ชันเดียวกันในภาษาจาวา
ผมจะให้ตารางพร้อมตัวอย่างบางส่วน
# | ขอ | ผลลัพธ์ |
---|---|---|
1 | เลือกความยาว ('ข้อความ') | 4 |
2 | เลือกความยาว ('สวัสดี') | 12 |
3 | เลือกต่ำ ('สูง') | สวัสดี |
4 | เลือกบน ('สวัสดี') | สวัสดี |
5 | เลือกSUBSTR ('สวัสดี', 2, 3) | แม่น้ำ |
6 | เลือกSUBSTR ('สวัสดี สบายดีไหม', 8) | คุณเป็นอย่างไร? |
ฟังก์ชั่นทำงานตามที่คาดไว้ เช่นเดียวกับฟังก์ชั่นจาก JDK
ข้อแม้เพียงอย่างเดียว: ในบรรทัดแรกผลลัพธ์คือ 4 ไม่ใช่ 8 สิ่งนี้คือใช้ 1 ไบต์ (การเข้ารหัส ASCII) ในคำขอ เพื่อเข้ารหัสอักขระละติน แต่ถ้าคุณทำงานกับข้อมูลจากฐานข้อมูล ความ ยาวของสตริงจะขึ้นอยู่กับการตั้งค่าการเข้ารหัสฐานข้อมูล คุณจะพบกับความประหลาดใจมากมายขณะทำงานกับฐานข้อมูล :)
การกระทำที่ซับซ้อนด้วยสตริง
มาดูสิ่งที่ซับซ้อนมากขึ้นเมื่อทำงานกับสตริง คุณจะได้อะไรมาบ้าง...
มาแสดงงานจากตารางงานกันเถอะ และถ้าเลยกำหนดเวลางานไปแล้ว ให้เพิ่มคำว่าEXPIRED ในรายละเอียดของงาน!
ฟังดูน่าสนใจ. แม้ว่าเราจะยังไม่ได้เรียนรู้เงื่อนไขที่ซับซ้อน ดังนั้นมาทำให้งานง่ายขึ้นเล็กน้อย ลองเขียนแบบสอบถามที่จะแสดงรายการงานที่ผ่านมา แต่อย่าลืมเพิ่มคำว่า“หมดอายุ!” ในชื่อเรื่อง .
ในการทำเช่นนี้เราจะต้องใช้ฟังก์ชัน CONCAT:
SELECT CONCAT( 'EXPIRED! ', name) FROM task
WHERE deadline < CURDATE()
ผลลัพธ์ของแบบสอบถามนี้จะเป็น:
concat('หมดอายุ!' ชื่อ) |
---|
หมดอายุ! แก้ไขข้อบกพร่องในส่วนหน้า |
คำแนะนำ หากคุณเพียงแค่ต้องการแปลงข้อมูลเป็นรูปแบบที่แตกต่างกันเล็กน้อย ก็สามารถทำได้ที่ระดับโค้ด Java แต่ถ้าคุณต้องการใช้ฟังก์ชันสตริงฝั่งเซิร์ฟเวอร์ SQL (ภายใน WHERE) คุณจะไม่สามารถทำได้หากไม่มีพวกเขา
GO TO FULL VERSION