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

ใช้ค่าตัวเลขเป็นอาร์กิวเมนต์ใน STRCMP()

STRCMP() รองรับตัวเลขโดยตรง

ใส่ตัวเลข โดยไม่ต้องใส่เครื่องหมายคำพูด MySQL จะแปลงเป็นสตริงเพื่อเปรียบเทียบ

ตัวอย่างครบ

mysql> SELECT 
    STRCMP(10,10) AS 'Equal Numbers',
    STRCMP(11,10) AS '2nd Smaller',
    STRCMP(10,11) AS '1st Smaller',
    STRCMP(10,NULL) AS '2nd NULL',
    STRCMP(NULL,10) AS '1st NULL',
    STRCMP(NULL,NULL) AS 'Both NULL';
+---------------+-------------+-------------+----------+----------+-----------+
| Equal Numbers | 2nd Smaller | 1st Smaller | 2nd NULL | 1st NULL | Both NULL |
+---------------+-------------+-------------+----------+----------+-----------+
| 0             | 1           | -1          | NULL     | NULL     | NULL      |
+---------------+-------------+-------------+----------+----------+-----------+

การอธิบายแต่ละกรณี

  • 10, 10 → 0 (เท่ากัน)
  • 11, 10 → 1 (ตัวแรกมากกว่า)
  • 10, 11 → -1 (ตัวแรกน้อยกว่า)
  • มี NULL → คืน NULL ทุกกรณี

ข้อสังเกต

  • เปรียบเทียบแบบ String comparison (lexicographical)
  • ตัวเลขหลายหลักอาจให้ผลต่างจากการเปรียบเทียบตัวเลขจริง (เช่น '9' > '10' เพราะ '9' > '1')
  • แนะนำให้ใช้ตัวดำเนินการเปรียบเทียบตัวเลข (>, <, =) แทนสำหรับตัวเลข