การแยก User ID จากฟังก์ชัน USER() ใน MySQL
ฟังก์ชัน USER() คืนค่าในรูปแบบ username@hostname ใช้ SUBSTRING_INDEX() แยกส่วนที่ต้องการ
ตัวอย่างการใช้งาน
ดู User ปัจจุบัน:
mysql> SELECT USER();
+----------------+ | USER() | +----------------+ | root@localhost | +----------------+
ดึงเฉพาะ Username (ส่วนหน้าของ @)
mysql> SELECT SUBSTRING_INDEX(USER(), '@', 1);
+-------------------------------+ | SUBSTRING_INDEX(USER(), '@', 1) | +-------------------------------+ | root | +-------------------------------+
ดึงเฉพาะ Hostname (ส่วนหลัง @)
mysql> SELECT SUBSTRING_INDEX(USER(), '@', -1);
+--------------------------------+ | SUBSTRING_INDEX(USER(), '@', -1) | +--------------------------------+ | localhost | +--------------------------------+
คำอธิบาย SUBSTRING_INDEX(str, delim, count):
count > 0- คืนส่วนก่อน delimiter ครั้งที่ countcount < 0- คืนส่วนหลัง delimiter ครั้งที่ |count| นับจากท้าย
ฟังก์ชันเกี่ยวข้อง:
CURRENT_USER()- ผู้ใช้ที่ MySQL ใช้ตรวจสอบสิทธิ์ (อาจต่างจาก USER() ใน DEFINER context)SESSION_USER()- Synonym ของ USER()SYSTEM_USER()- Synonym ของ USER()