รายการฟังก์ชันตัวเลข
ดังที่เราได้กล่าวไว้ข้างต้น 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) ไป ยังอัลกอริทึมการสร้างหมายเลขสุ่ม แต่ละครั้งคุณจะได้รับหมายเลขสุ่มลำดับเดียวกัน
GO TO FULL VERSION