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

เรียงลำดับชื่อโดเมนใน MySQL ด้วย SUBSTRING_INDEX

บทความนี้สาธิตการเรียงลำดับชื่อโดเมน (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 ตัวที่ count
  • count > 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)