บทความนี้สาธิตการเรียงลำดับชื่อโดเมน (Domain Name) ให้ถูกต้องตามโครงสร้าง Top-Level Domain และ Second-Level Domain โดยใช้ SUBSTRING_INDEX()
สร้างตารางและข้อมูลโดเมน
mysql> CREATE TABLE DemoTable670 (DomainName TEXT);
Query OK, 0 rows affected (0.77 sec)
mysql> INSERT INTO DemoTable670 VALUES('www.facebook.com');
mysql> INSERT INTO DemoTable670 VALUES('www.google.com');
mysql> INSERT INTO DemoTable670 VALUES('www.amazon.com');
คิวรีเรียงลำดับโดเมน
mysql> SELECT * FROM DemoTable670
ORDER BY
SUBSTRING_INDEX(DomainName, '.', -2), -- com.facebook, com.google, com.amazon
SUBSTRING_INDEX(DomainName, '.', 2); -- www.facebook, www.google, www.amazon
ผลลัพธ์ (เรียงตาม SLD: amazon, facebook, google)
+------------------+
| DomainName |
+------------------+
| www.amazon.com |
| www.facebook.com |
| www.google.com |
+------------------+
คำอธิบาย SUBSTRING_INDEX:
SUBSTRING_INDEX(str, delim, count)- คืนส่วนของสตริงก่อน/หลัง Delimiter ตัวที่ countcount > 0- นับจากซ้ายไปขวา (ซ้ายของ delimiter ตัวที่ count)count < 0- นับจากขวาไปซ้าย (ขวาของ delimiter ตัวที่ |count|)SUBSTRING_INDEX(DomainName, '.', -2)- เอาส่วนท้าย 2 ส่วน (เช่น facebook.com)SUBSTRING_INDEX(DomainName, '.', 2)- เอาส่วนหน้า 2 ส่วน (เช่น www.facebook)
ผลลัพธ์: เรียงตาม Second-Level Domain (amazon, facebook, google) ก่อน แล้วค่อย Subdomain (www)