PostgreSQL ฟังก์ชัน SUBSTRING() พร้อมตัวอย่าง Regex
ความหมายของ PostgreSQL สตริงย่อย?
เค้ก PostgreSQL ฟังก์ชันสตริงย่อยช่วยให้คุณแยกและส่งคืนส่วนหนึ่งของสตริง แทนที่จะส่งคืนสตริงทั้งหมด จะส่งคืนเพียงบางส่วนเท่านั้น
วากยสัมพันธ์
เค้ก PostgreSQL ฟังก์ชัน substring มีรูปแบบดังต่อไปนี้:
substring( string [from starting_position] [for length] )
พารามิเตอร์
Name | Descriptไอออน |
---|---|
เชือก | สตริงต้นทางที่มีประเภทข้อมูลเป็น varchar, char, string ฯลฯ |
การเริ่มต้น_ตำแหน่ง | มันเป็นพารามิเตอร์ทางเลือก หมายถึงสถานที่ที่จะเริ่มการแยกสตริง หากคุณละเว้นพารามิเตอร์นี้ การแยกจะเริ่มต้นจากตำแหน่ง 1 ซึ่งเป็นอักขระตัวแรกในสตริง |
ความยาว | มันเป็นพารามิเตอร์ทางเลือก ระบุจำนวนอักขระที่จะแยกออกจากสตริง หากคุณละเว้นพารามิเตอร์นี้ ฟังก์ชันจะแยกจาก beginning_position ถึงจุดสิ้นสุดของสตริง |
ตัวอย่าง
ในตัวอย่างนี้ เราต้องการแยกอักขระ 4 ตัวแรกจากคำว่า Guru99:
SELECT substring('Guru99' for 4);
คำสั่งจะส่งคืนสิ่งต่อไปนี้:
เราไม่ได้ระบุตำแหน่งเริ่มต้น ดังนั้นการแยกสตริงย่อยจึงเริ่มต้นที่ตำแหน่ง 1 โดยแยกอักขระ 4 ตัวเพื่อส่งคืนค่าข้างต้น
ตัวอย่างต่อไปนี้จะแสดงวิธีการระบุตำแหน่งเริ่มต้น:
SELECT substring('Guru99' from 1 for 4);
คำสั่งจะส่งคืนสิ่งต่อไปนี้:
เราระบุว่าการแยกสตริงย่อยควรเริ่มต้นจากตำแหน่ง 1 และควรแยกอักขระ 4 ตัว
ให้เราแยก 99 ออกจากสตริง Guru99:
SELECT substring('Guru99' from 5);
คำสั่งจะส่งคืนสิ่งต่อไปนี้:
เราระบุตำแหน่งเริ่มต้นเป็น 5 เนื่องจากไม่ได้ระบุจำนวนอักขระที่จะแยก การแยกจึงวิ่งไปที่จุดสิ้นสุดของสตริง
นี่เป็นอีกตัวอย่างหนึ่ง:
SELECT substring('Guru99' from 5 for 2);
คำสั่งจะส่งคืนสิ่งต่อไปนี้:
เราได้เริ่มการแยกที่ตำแหน่ง 5 และแยกอักขระ 2 ตัวแล้ว
พิจารณาตารางหนังสือที่ระบุด้านล่าง:
เราต้องการทราบคร่าวๆ เกี่ยวกับชื่อหนังสือแต่ละเล่ม อย่างไรก็ตาม เราสามารถแยกเฉพาะอักขระ 15 ตัวแรกจากคอลัมน์ชื่อของตารางได้:
SELECT id, SUBSTRING(name, 1, 15 ) AS name_initial FROM Book ORDER BY id;
คำสั่งจะส่งคืนสิ่งต่อไปนี้:
ตอนนี้เรามีไอเดียคร่าวๆ เกี่ยวกับชื่อหนังสือทุกเล่มแล้ว
การจับคู่สตริงย่อยกับนิพจน์ปกติของ SQL
In PostgreSQLเราสามารถแยกสตริงย่อยที่ตรงกับนิพจน์ทั่วไป POSIX ที่ระบุได้ ในกรณีนี้ ฟังก์ชันสตริงย่อยจะถูกใช้ตามรูปแบบต่อไปนี้:
SUBSTRING(string FROM matching_pattern)
or
SUBSTRING(string, matching_pattern);
นี่คือคำอธิบายของพารามิเตอร์ข้างต้น:
สตริงคือสตริงต้นทางที่มี ประเภทข้อมูล คือ varchar, char, string เป็นต้น
matching_pattern คือรูปแบบที่จะใช้ในการค้นหาในสตริง
ตัวอย่าง
SELECT SUBSTRING ( 'Your age is 22', '([0-9]{1,2})' ) as age;
คำสั่งจะส่งคืนสิ่งต่อไปนี้:
สตริงอินพุตของเราคืออายุของคุณคือ 22 ในรูปแบบที่เรากำลังค้นหารูปแบบตัวเลขในสตริงของเรา เมื่อพบสิ่งนี้ ฟังก์ชันสตริงย่อยควรแยกอักขระสองตัวเท่านั้น
วิธีจับคู่สตริงย่อยโดยใช้ pgAdmin
ตอนนี้เรามาดูวิธีการดำเนินการโดยใช้ pgAdmin
แบบสอบถามด้านบนที่เราไม่ต้องการฐานข้อมูลสามารถดำเนินการได้โดยตรงจากหน้าต่างตัวแก้ไขแบบสอบถาม เพียงทำดังต่อไปนี้:
ขั้นตอน 1) เข้าสู่ระบบบัญชีของคุณ
เข้าสู่ระบบบัญชี pgAdmin ของคุณ
ขั้นตอน 2) บน pgAdmin
คลิกไอคอนเครื่องมือ Query
หน้าต่างตัวแก้ไขแบบสอบถามจะเปิดขึ้น
ขั้นตอน 3) พิมพ์แบบสอบถาม
พิมพ์แบบสอบถามต่อไปนี้ในหน้าต่างแก้ไข
SELECT substring('Guru99' for 4);
ขั้นตอน 4) ดำเนินการค้นหา
คลิกไอคอนดำเนินการเพื่อดำเนินการค้นหา
ขั้นตอน 5) การดำเนินการค้นหาเสร็จสิ้น
ควรส่งคืนสิ่งต่อไปนี้:
2 ตัวอย่าง:
SELECT substring('Guru99' from 1 for 4);
ควรส่งคืนสิ่งต่อไปนี้:
นี่คือตัวอย่างถัดไป:
SELECT substring('Guru99' from 5);
ควรส่งคืนสิ่งต่อไปนี้:
3 ตัวอย่าง:
SELECT substring('Guru99' from 5 for 2);
ควรส่งคืนสิ่งต่อไปนี้:
ตอนนี้ ให้เรารันตัวอย่างโดยใช้ตาราง Book ของฐานข้อมูล Demo:
ขั้นตอน 1) เข้าสู่ระบบบัญชี pgAdmin ของคุณ
ขั้นตอน 2)
- จากแถบนำทางทางด้านซ้ายให้คลิกฐานข้อมูล
- คลิกสาธิต
ขั้นตอน 3) พิมพ์แบบสอบถามในตัวแก้ไขแบบสอบถาม:
SELECT id, SUBSTRING(name, 1, 15 ) AS name_initial FROM Book ORDER BY id;
ขั้นตอน 4) คลิกปุ่มดำเนินการ
ควรส่งคืนสิ่งต่อไปนี้:
ตอนนี้เรามีแนวคิดพื้นฐานเกี่ยวกับชื่อหนังสือทุกเล่มแล้ว
การจับคู่สตริงย่อยกับนิพจน์ปกติของ SQL
หากต้องการทำสิ่งเดียวกันบน pgAdmin ให้ทำดังต่อไปนี้:
ขั้นตอน 1) เข้าสู่ระบบบัญชี pgAdmin ของคุณ
ขั้นตอน 2) คลิกไอคอนเครื่องมือ Query
หน้าต่างตัวแก้ไขแบบสอบถามจะเปิดขึ้น
ขั้นตอน 3) พิมพ์แบบสอบถามต่อไปนี้ในหน้าต่างแก้ไข
SELECT SUBSTRING ( 'Your age is 22', '([0-9]{1,2})' ) as age;
ขั้นตอน 4) คลิกไอคอนดำเนินการเพื่อดำเนินการค้นหา
ควรส่งคืนสิ่งต่อไปนี้:
สรุป
- เค้ก PostgreSQL ฟังก์ชั่น Substring ช่วยในการแยกและส่งกลับเพียงส่วนหนึ่งของสตริง
- อักขระตัวแรกของสตริงอยู่ที่ตำแหน่ง 1
- หากไม่ได้ระบุจำนวนอักขระที่จะแยกออกจากสตริง ฟังก์ชันจะแยกอักขระจากตำแหน่งเริ่มต้นที่ระบุไปยังจุดสิ้นสุดของสตริง
- หากระบุจำนวนอักขระที่จะแยกออกมา ระบบจะแยกเฉพาะจำนวนอักขระนั้นเท่านั้น
ดาวน์โหลดฐานข้อมูลที่ใช้ในบทช่วยสอนนี้