รายการฟังก์ชันตัวเลข

ดังที่เราได้กล่าวไว้ข้างต้น DBMS จะจัดเก็บข้อมูลประเภทใดประเภทหนึ่งเพียงอย่างเดียวไม่เพียงพอสำหรับ DBMS เท่านั้น แต่ยังต้องรองรับชุดการดำเนินการที่รวดเร็วเป็นพิเศษกับข้อมูลประเภทเหล่านี้ด้วย

และอย่างที่คุณทราบ DBMS ทั้งหมดรองรับประเภทตัวเลขและการดำเนินการที่หลากหลาย วันนี้คุณจะได้ทำความคุ้นเคยกับความนิยมสูงสุดของพวกเขา

ฟังก์ชันตัวเลขทั้งหมดใน MySQL สามารถแบ่งตามเงื่อนไขออกเป็น 5 กลุ่ม:

  • การดำเนินการทางคณิตศาสตร์
  • การทำงานของบิต
  • ฟังก์ชันการปัดเศษ
  • ฟังก์ชันเกี่ยวกับพีชคณิต
  • ฟังก์ชันตรีโกณมิติ

อย่างไรก็ตาม คุณคุ้นเคยกับพวกเขาหลายคนด้วยภาษา Java ดังนั้นฉันคิดว่าพวกเขาจะไม่แปลกใจสำหรับคุณ แต่มาเริ่มกันเลย

รายการคุณสมบัติทั้งหมดสามารถพบได้ที่นี่

การดำเนินการทางคณิตศาสตร์

โดยหลักการแล้ว ไม่มีอะไรที่คาดไม่ถึง การดำเนินการมาตรฐานเดียวกันกับที่อื่นทั้งหมด:

# ตัวอย่าง
1 +, -, *, / 2+2*2 บวก ลบ คูณ หาร (ไม่ลงตัว!)
2 % 13% 5 ส่วนที่เหลือของส่วน
3 MOD 13MOD5 ส่วนที่เหลือของส่วน
4 กรมทรัพย์สินทางปัญญา 13 ดิวิ 5 หารด้วยจำนวนเต็ม

จากสิ่งที่น่าสนใจ: เมื่อหารจำนวนเต็มสองจำนวน คุณจะได้จำนวนจริง ในการหารด้วยจำนวนเต็ม คุณต้องใช้ตัวดำเนินการ DIV

หากคุณต้องการรับเศษที่เหลือจากการหารด้วยจำนวนเต็ม คุณต้องใช้ตัวดำเนินการ MOD หรือ % เช่นเดียวกับในภาษา Java ฉันจะไม่ยกตัวอย่างเพราะสำหรับฉันทุกอย่างชัดเจนที่นี่

การทำงานของบิต

คุณยังสามารถดำเนินการระดับบิตกับตัวเลขใน SQL ได้เช่นเดียวกับใน Java แม้ว่าจะมีความแตกต่าง รายการการทำงานของบิตที่มีอยู่แสดงอยู่ในตารางด้านล่าง:

# ตัวอย่าง บันทึก
1 & 0b1111 & 0b1000 ในระดับบิตและ
2 | 0b1111 | 0b0001 ในระดับบิตหรือ
3 ^ 0b1111^0b1111 บิต XOR
4 ~ ~0b1111 การผกผันระดับบิต
5 >> 128 >>5 บิตเลื่อนไปทางขวา
6 << 2 << 5 บิตเลื่อนไปทางซ้าย
7 BIT_COUNT() BIT_COUNT(255) ส่งกลับจำนวนบิตที่เป็น 1

ก่อน MySQL เวอร์ชัน 8.0 การดำเนินการดังกล่าวสามารถทำได้เฉพาะกับประเภทข้อมูล BIGINT ซึ่งมีความยาว 64 บิตและคล้ายกับประเภทยาวของ Java อย่างไรก็ตามใน MySQL 8.0 (ซึ่งเรากำลังพิจารณาอยู่) แนวคิดได้เปลี่ยนไป ขณะนี้การดำเนินการเหล่านี้สามารถดำเนินการกับประเภทไบนารีพิเศษได้:

  • ไบนารี่
  • วาร์บินารี่
  • และยังมีประเภท BLOB (ซึ่งเป็นอาร์เรย์ของไบต์)

ประเภทอื่นๆ ทั้งหมดจะถูกแปลงเป็นประเภท BIGINT และดำเนินการตามเดิม (เฉพาะใน 64 บิตแรก)

ฟังก์ชันการปัดเศษ

สำหรับการปัดเศษในฟังก์ชัน MySQL ที่คุณคุ้นเคยอย่างเจ็บปวด รายการของพวกเขาได้รับในตารางด้านล่าง:

# ตัวอย่าง บันทึก
1 เพดาน(), เพดาน() CEIL (5.1) = 6 ปัดเศษจำนวนจริงขึ้น
2 พื้น() ชั้น(5.9) = 5 ปัดเศษจำนวนจริงลง
3 กลม() รอบ (4.1) = 4 ปัดเศษจำนวนจริงให้เป็นจำนวนเต็มที่ใกล้เคียงที่สุด
4 ตัด() ตัดทอน(4.123, 2) = 4.12 ตัดทอนตัวเลขให้เป็นทศนิยม N ตำแหน่ง
5 แรนด์() 0.61914388706828 ส่งกลับจำนวนจริงแบบสุ่มระหว่าง 0 ถึง 1
6 แรนด์(N) 0.93845168309142 ส่งกลับจำนวนจริงแบบสุ่มระหว่าง 0 ถึง 1 N ใช้เป็นค่าตั้งต้น

คุณคุ้นเคยกับฟังก์ชันการปัดเศษทั้งหมดตั้งแต่ภารกิจแรกใน Java เฉพาะฟังก์ชัน TRUNCATE() และ RANDOM(N) เท่านั้นที่น่าสนใจที่นี่

ฟังก์ชันTRUNCATE (จำนวน, ปริมาณ) ใช้พารามิเตอร์ตัวแรกเป็นจำนวนจริง และพารามิเตอร์ตัวที่สองคือจำนวนตำแหน่งทศนิยมที่ต้องเหลือไว้ ตัวเลขจะถูกตัดให้เป็นจำนวนทศนิยมที่ต้องการ

สำหรับฟังก์ชัน RAND(N) นั้นซับซ้อนกว่าเล็กน้อย อย่างที่คุณทราบ คอมพิวเตอร์ไม่สามารถสร้างตัวเลขสุ่มได้ แต่จะสร้างลำดับหมายเลขสุ่มหลอกขึ้นมาแทน คือดูเลขตัวเดียวก็ไม่ชัดเจนว่าสุ่มหรือไม่ แต่ลำดับของเลขอาจคล้ายสุ่มอยู่แล้ว นักพัฒนาใช้ประโยชน์จากสิ่งนี้โดยสร้างลำดับของตัวเลขที่คล้ายกับการสุ่ม

ในกรณีนี้หมายเลขใหม่แต่ละหมายเลขของลำดับจะถูกสร้างขึ้นตามกฎที่ยุ่งยากโดยอิงตามหมายเลขก่อนหน้าของลำดับนี้ ดังนั้น หากคุณส่งหมายเลขเริ่มต้น (หรือที่เรียกว่า seed) ไป ยังอัลกอริทึมการสร้างหมายเลขสุ่ม แต่ละครั้งคุณจะได้รับหมายเลขสุ่มลำดับเดียวกัน