- 1 1. Giới thiệu
- 2 2. Các loại chuyển đổi kiểu trong MySQL
- 3 3. Ví dụ thực tế: Chuyển đổi chuỗi sang số
- 4 4. Ví dụ thực tế: Chuyển đổi số thành chuỗi
- 5 5. Các Trường Hợp Sử Dụng Nâng Cao với Chuyển Đổi Kiểu Dữ Liệu
- 6 6. Sự Khác Biệt Giữa CAST và CONVERT
- 7 7. Lưu ý quan trọng và các thực hành tốt nhất
- 8 8. Tóm tắt
- 9 9. Câu hỏi thường gặp (FAQ)
- 9.1 Q1. Điều gì sẽ xảy ra nếu tôi CAST một chuỗi như ‘abc’ thành số?
- 9.2 Q2. Tôi nên sử dụng CAST hay CONVERT?
- 9.3 Q3. Chuyển đổi kiểu ngầm định có đủ không?
- 9.4 Q4. Việc sử dụng chuyển đổi kiểu trong WHERE hoặc ORDER BY có làm mất hiệu lực của các chỉ mục không?
- 9.5 Q5. Chuyển đổi kiểu có an toàn cho số thập phân hoặc số lớn không?
- 9.6 Q6. Sự khác biệt giữa sắp xếp dưới dạng chuỗi và sắp xếp dưới dạng số là gì?
1. Giới thiệu
Khi làm việc với cơ sở dữ liệu MySQL, bạn thường gặp các tình huống như “dữ liệu lẽ ra phải được xử lý như số nhưng lại được lưu dưới dạng chuỗi” hoặc “không thể thực hiện tính toán và tổng hợp khi dữ liệu vẫn ở dạng chuỗi”. Ví dụ, dữ liệu nhập từ Excel hoặc file CSV thường được lưu dưới dạng VARCHAR hoặc CHAR, mặc dù chúng đại diện cho các giá trị số. Trong những trường hợp này, các thao tác như tổng, trung bình và so sánh số có thể không hoạt động như mong đợi, khiến việc viết các truy vấn SQL chính xác trở nên khó khăn.
Ngược lại, cũng có những kịch bản mà dữ liệu số cần được xử lý dưới dạng chuỗi. Ví dụ, khi muốn thêm các số 0 phía trước một ID hoặc mã, hoặc khi ghép dữ liệu số với các cột khác để hiển thị. Trong những trường hợp này, việc chuyển đổi kiểu số sang chuỗi là cần thiết.
Như vậy, “chuyển đổi kiểu giữa chuỗi và số” là một trong những kỹ năng cơ bản cần có để thao tác dữ liệu linh hoạt trong MySQL. Bằng cách sử dụng chuyển đổi kiểu một cách hợp lý, bạn có thể duy trì tính toàn vẹn của dữ liệu đồng thời cho phép tổng hợp và xử lý linh hoạt.
Trong bài viết này, chúng tôi sẽ giải thích rõ ràng cách chuyển đổi giữa chuỗi và số trong MySQL, cách sử dụng các kỹ thuật này một cách hiệu quả, cũng như những bẫy thường gặp và các thực tiễn tốt nhất dựa trên kinh nghiệm thực tế. Dù bạn là người mới bắt đầu hay một nhà phát triển SQL có kinh nghiệm, hướng dẫn này sẽ cung cấp giá trị thực tiễn.
2. Các loại chuyển đổi kiểu trong MySQL
MySQL cung cấp một số tính năng tiện lợi để chuyển đổi kiểu dữ liệu. Trong phần này, chúng tôi sẽ giải thích hai mẫu chính: “chuyển đổi kiểu rõ ràng” và “chuyển đổi kiểu ngầm định”, cùng với các phương pháp tiêu biểu của chúng.
2.1 Chuyển đổi kiểu rõ ràng
Chuyển đổi kiểu rõ ràng có nghĩa là chỉ định một cách rõ ràng trong SQL rằng “giá trị này nên được chuyển sang một kiểu cụ thể”. Hai hàm sau thường được sử dụng.
Hàm CAST
CAST() là một hàm chuẩn của SQL, dùng để chuyển một giá trị sang kiểu được chỉ định. Nó được sử dụng rộng rãi trong MySQL.
SELECT CAST('123' AS SIGNED);
Trong ví dụ này, chuỗi '123' được chuyển sang số nguyên có dấu (SIGNED). Các kiểu có thể chuyển đổi khác bao gồm UNSIGNED (số nguyên không dấu), DECIMAL (số thập phân cố định), CHAR (chuỗi), và DATE (ngày).
Hàm CONVERT
CONVERT() là một hàm khác dùng để chuyển giá trị sang các kiểu dữ liệu khác nhau. Cú pháp như sau.
SELECT CONVERT('456', UNSIGNED);
Trong ví dụ này, chuỗi '456' được chuyển sang số nguyên không dấu (UNSIGNED). Điểm khác biệt chính so với CAST() là CONVERT() còn có thể được dùng để chuyển đổi bộ ký tự.
2.2 Chuyển đổi kiểu ngầm định
Chuyển đổi kiểu ngầm định là cơ chế mà MySQL tự động chuyển đổi kiểu dữ liệu khi thực hiện các phép toán hoặc so sánh.
Ví dụ, khi cộng một số và một chuỗi, MySQL sẽ tự động chuyển chuỗi sang giá trị số.
SELECT 1 + '2';
-- Result: 3
Tương tự, khi nối các giá trị số dưới dạng chuỗi:
SELECT CONCAT(10, ' apples');
-- Result: '10 apples'
Chuyển đổi kiểu ngầm định rất tiện lợi, nhưng có thể tạo ra kết quả không mong muốn. Do đó, đối với các logic phức tạp hoặc quy trình quan trọng, nên sử dụng chuyển đổi kiểu rõ ràng một cách mạnh mẽ.
3. Ví dụ thực tế: Chuyển đổi chuỗi sang số
Trong MySQL, khi các giá trị số được lưu dưới dạng chuỗi (như CHAR hoặc VARCHAR), bạn không thể thực hiện tính toán hoặc so sánh số một cách đáng tin cậy. Để tổng hợp và phân tích dữ liệu đúng cách, bạn cần chuyển đổi chuỗi sang các kiểu số. Phần này giới thiệu các phương pháp chuyển đổi thường dùng và những lưu ý quan trọng.
3.1 Chuyển đổi bằng hàm CAST
Cách tiếp cận cơ bản nhất là sử dụng hàm CAST(). Ví dụ, để chuyển chuỗi '100' thành một số nguyên, viết như sau:
SELECT CAST('100' AS SIGNED) AS numeric_result;
-- Result: 100 (integer)
Use SIGNED cho các số nguyên có dấu và UNSIGNED cho các số nguyên không dấu. Đối với dữ liệu thập phân, bạn cũng có thể sử dụng DECIMAL hoặc FLOAT as well.
SELECT CAST('123.45' AS DECIMAL(10,2)) AS decimal_result;
-- Result: 123.45
3.2 Chuyển đổi bằng hàm CONVERT
Hàm CONVERT() có thể được sử dụng gần như theo cùng một cách:
SELECT CONVERT('200', SIGNED) AS converted_result;
-- Result: 200
Cả hai đều cho ra kết quả giống nhau, nhưng vì CAST() là chuẩn SQL và cung cấp khả năng di động tốt hơn, nó thường được khuyến nghị khi có sự nghi ngờ.
3.3 Chuyển đổi ngầm qua phép toán
Khi bạn thực hiện các phép toán với các kiểu số và chuỗi trong biểu thức SQL, MySQL tự động chuyển đổi chuỗi thành số. Ví dụ:
SELECT '50' + 25 AS total;
-- Result: 75
Bạn cũng có thể áp dụng hành vi này cho các hàm tổng hợp. Ví dụ, nếu bạn truyền một cột kiểu chuỗi vào SUM(), MySQL sẽ tự động cố gắng chuyển đổi sang số và cộng các giá trị:
SELECT SUM(amount) FROM sales_data;
-- Even if the amount column is VARCHAR, MySQL will attempt numeric summation
3.4 Cẩn thận với chuỗi có số 0 phía trước và giá trị không phải số
Các chuỗi có số 0 phía trước (ví dụ, '000100') cũng có thể được chuyển đổi thành số:
SELECT CAST('000100' AS SIGNED) AS converted_result;
-- Result: 100
Tuy nhiên, hãy cẩn thận nếu chuỗi chứa các ký tự không phải số. Nếu bạn chuyển đổi một thứ như CAST('abc123' AS SIGNED), và không có ký tự số nào ở đầu, MySQL sẽ trả về 0. Tùy thuộc vào chất lượng dữ liệu, việc thực hiện kiểm tra đầu vào trước khi chuyển đổi là rất quan trọng.
3.5 Các trường hợp sử dụng thực tế phổ biến
- Tổng hợp dữ liệu bán hàng hoặc số tiền đã trở thành chuỗi do nhập từ Excel/CSV
- Sắp xếp ID lưu dưới dạng chuỗi (mặc dù chúng đại diện cho số) theo thứ tự số
- Sắp xếp các chuỗi ngày lưu ở định dạng
YYYYMMDDtheo thứ tự ngày (sẽ được giải thích sau)
4. Ví dụ thực tế: Chuyển đổi số thành chuỗi
Trong MySQL, có rất nhiều trường hợp bạn muốn xử lý dữ liệu số như là chuỗi. Các ví dụ điển hình bao gồm hiển thị ID hoặc mã với số 0 phía trước, hoặc xây dựng thông báo bằng cách nối các giá trị số với văn bản khác. Phần này giới thiệu các phương pháp tiêu biểu và các trường hợp sử dụng thực tế.
4.1 Chuyển đổi bằng hàm CAST
Để chuyển đổi một kiểu số (như INT hoặc DECIMAL) thành kiểu chuỗi một cách rõ ràng, sử dụng CAST():
SELECT CAST(123 AS CHAR) AS string_result;
-- Result: '123'
Với phương pháp này, bạn có thể dễ dàng nối các cột số với các chuỗi khác.
4.2 Chuyển đổi bằng hàm CONVERT
Bạn cũng có thể làm tương tự với CONVERT():
SELECT CONVERT(456, CHAR) AS converted_result;
-- Result: '456'
Có ít khác biệt so với CAST(), nhưng từ góc độ chuẩn SQL, CAST() được ưa thích một chút.
4.3 Chuyển đổi ngầm qua việc nối chuỗi
Khi nối các số và chuỗi bằng các hàm như CONCAT(), MySQL tự động chuyển đổi các số thành chuỗi.
SELECT CONCAT(2024, ' year') AS fiscal_year_display;
-- Result: '2024 year'
Việc chuyển đổi ngầm này thường được sử dụng cho việc xuất báo cáo thường xuyên và định dạng dữ liệu.
4.4 Các trường hợp sử dụng thực tế phổ biến
- Tạo ID có số 0 phía trước Để hiển thị một ID số ở dạng 5 chữ số, kết hợp nó với
LPAD()như sau:SELECT LPAD(CAST(id AS CHAR), 5, '0') AS zero_padded_id FROM users; -- If id=7, the result is '00007'
- Nối ngày hoặc số tiền thành chuỗi
SELECT CONCAT('The total amount is ', CAST(total AS CHAR), ' yen.') AS message FROM orders; -- If total=1500, the result is 'The total amount is 1500 yen.'
4.5 Ghi chú
Ngay cả khi chuỗi đã chuyển đổi trông giống nhau về mặt hình ảnh, hành vi của “sắp xếp” và “các phép so sánh” sẽ thay đổi.
Ví dụ, khi sắp xếp dưới dạng chuỗi, '20' có thể đứng trước '100' (theo thứ tự từ điển). Vì vậy, việc chọn cách tiếp cận phù hợp với mục đích của bạn là rất quan trọng.
5. Các Trường Hợp Sử Dụng Nâng Cao với Chuyển Đổi Kiểu Dữ Liệu
Chuyển đổi kiểu dữ liệu không chỉ giới hạn ở các phép biến đổi số học hoặc chuỗi đơn giản. Nó còn có thể được áp dụng trong nhiều tình huống thực tiễn trong các hệ thống thực tế. Phần này giới thiệu các trường hợp nâng cao thường được sử dụng và các lưu ý quan trọng của chúng.
5.1 So Sánh và Chuyển Đổi Các Chuỗi Kiểu Ngày
Nếu cơ sở dữ liệu của bạn lưu trữ ngày ở định dạng như YYYYMMDD dưới dạng kiểu số hoặc chuỗi, việc so sánh chuỗi đơn giản có thể không luôn cho kết quả như mong đợi.
Trong những trường hợp như vậy, chuyển đổi giá trị sang kiểu số bằng cách sử dụng CAST() cho phép sắp xếp và so sánh theo thứ tự thời gian một cách chính xác.
SELECT *
FROM events
ORDER BY CAST(event_date AS UNSIGNED);
-- Values such as '20240501', '20240502', etc. are sorted in date order
Bạn cũng có thể kết hợp với hàm REPLACE() để chuyển các ngày được ngăn cách bằng dấu gạch ngang như '2024-05-01' thành số nguyên.
SELECT CAST(REPLACE('2024-05-01', '-', '') AS UNSIGNED);
-- Result: 20240501
5.2 Sắp Xếp Các Kiểu ENUM hoặc Giá Trị Mã Số Theo Thứ Tự Số
Đối với các kiểu ENUM hoặc các giá trị mã đại diện cho ý nghĩa số, bạn có thể muốn sắp xếp chúng theo thứ tự số thay vì thứ tự từ điển. Bằng cách chuyển chúng sang kiểu số bằng CAST() trước khi sắp xếp, bạn sẽ có được thứ tự trực quan.
SELECT *
FROM products
ORDER BY CAST(product_code AS UNSIGNED);
5.3 Sử Dụng Trong Tổng Hợp và Định Dạng Dữ Liệu
Ví dụ, nếu các khoản doanh thu được lưu dưới dạng VARCHAR, bạn có thể lấy tổng chính xác bằng cách chuyển đổi chúng một cách rõ ràng bên trong SUM().
SELECT SUM(CAST(sales_amount AS SIGNED)) AS total_sales
FROM sales_data;

5.4 Ngăn Ngừa Các Vấn Đề Về Độ Chính Xác và Lựa Chọn Kiểu Dữ Liệu
Đối với các giá trị thập phân hoặc số lớn, chuyển sang kiểu DECIMAL giúp duy trì độ chính xác.
Việc lựa chọn giữa SIGNED và UNSIGNED cũng rất quan trọng, tùy thuộc vào việc dữ liệu của bạn có thể chứa các giá trị âm hay không.
SELECT CAST('1234.567' AS DECIMAL(10, 3));
-- Result: 1234.567
5.5 Phát Hiện Lỗi Hoặc Dữ Liệu Không Hợp Lệ
Nếu quá trình chuyển đổi tạo ra các giá trị NULL hoặc 0 không mong đợi, điều này có thể cho thấy dữ liệu không hợp lệ.
Ví dụ, nếu một chuỗi không thể chuyển thành số, CAST() có thể trả về 0 hoặc NULL tùy thuộc vào chế độ SQL.
Trong những trường hợp như vậy, việc kiểm tra kết quả chuyển đổi có thể giúp xác định nhu cầu làm sạch hoặc xác thực dữ liệu.
SELECT original, CAST(original AS SIGNED) AS converted
FROM test_data
WHERE CAST(original AS SIGNED) = 0 AND original <> '0';
-- Extract only data that cannot be properly converted to numeric values
6. Sự Khác Biệt Giữa CAST và CONVERT
Khi thực hiện chuyển đổi kiểu dữ liệu trong MySQL, bạn thường sử dụng hàm CAST hoặc hàm CONVERT. Mặc dù chúng trông giống nhau, nhưng có những khác biệt về cách sử dụng và đặc điểm. Phần này giải thích những khác biệt đó và cách lựa chọn giữa chúng.
6.1 Những Khác Biệt Cơ Bản
- Hàm CAST Sử dụng cú pháp
CAST(value AS type)để chuyển đổi một giá trị sang kiểu được chỉ định một cách rõ ràng. Nó được định nghĩa trong chuẩn SQL và hoạt động tương tự trên nhiều hệ quản trị cơ sở dữ liệu.SELECT CAST('123' AS SIGNED);
- Hàm CONVERT Sử dụng cú pháp
CONVERT(value, type)để chuyển đổi một giá trị sang kiểu được chỉ định. Trong MySQL, nó cũng có thể được dùng để chuyển đổi bộ ký tự.SELECT CONVERT('123', SIGNED); -- Type conversion SELECT CONVERT('hello' USING utf8mb4); -- Character set conversion
6.2 Tương Thích Với Chuẩn SQL
Vì CAST là một phần của chuẩn SQL quốc tế, nó cung cấp khả năng di chuyển tốt hơn sang các hệ quản trị cơ sở dữ liệu khác (như PostgreSQL, SQL Server và Oracle). Ngược lại, CONVERT bao gồm các mở rộng riêng của MySQL, đặc biệt cho chuyển đổi bộ ký tự, sử dụng cú pháp như CONVERT(expr USING charset_name).
6.3 Cách Lựa Chọn Giữa Chúng
- Đối với chuyển đổi kiểu (số, chuỗi, ngày, v.v.) Trong hầu hết các trường hợp, sử dụng
CASTlà lựa chọn an toàn nhất. Nó là chuẩn SQL, rất di động và phù hợp cho các lần di chuyển cơ sở dữ liệu trong tương lai. - Đối với chuyển đổi bộ ký tự (ví dụ, sjis sang utf8mb4) Bạn phải sử dụng
CONVERT(expr USING charset_name). - Đối với các trường hợp đặc thù của MySQL hoặc các trường hợp đặc biệt
CONVERTcó thể cung cấp tính linh hoạt bổ sung, nhưng cho mục đích chung, hãy bắt đầu vớiCASTvà chỉ sử dụngCONVERTkhi cần thiết.
6.4 Sample Comparison
-- Type conversion using CAST (convert to integer)
SELECT CAST('456' AS SIGNED);
-- Type conversion using CONVERT
SELECT CONVERT('456', SIGNED);
-- Character set conversion using CONVERT
SELECT CONVERT('Hello' USING utf8mb4);
6.5 Important Notes
- Nếu chuyển đổi thất bại, cả hai hàm có thể trả về
NULLhoặc0. - Chuyển đổi bộ ký tự không thể thực hiện bằng
CAST. - Hành vi có thể khác nhau tùy thuộc vào chế độ SQL hoặc phiên bản MySQL, vì vậy luôn kiểm tra trong cả môi trường phát triển và sản xuất.
7. Lưu ý quan trọng và các thực hành tốt nhất
Khi sử dụng chuyển đổi kiểu chuỗi và số trong MySQL, có một số cạm bẫy tiềm ẩn cần lưu ý. Phần này giới thiệu các thực hành tốt nhất để giúp ngăn ngừa vấn đề và đảm bảo việc sử dụng an toàn và chính xác.
7.1 Lỗi hoặc NULL/0 không mong muốn do chuyển đổi không hợp lệ
Khi thực hiện chuyển đổi kiểu, nếu giá trị nguồn không ở định dạng đúng, MySQL có thể trả về các giá trị NULL hoặc 0 không mong muốn.
SELECT CAST('abc' AS SIGNED) AS result;
-- Result: 0 (default MySQL behavior)
Như đã chỉ ra ở trên, chuyển đổi một chuỗi không phải số sang kiểu số sẽ cho kết quả là 0. Do đó, luôn kiểm tra dữ liệu gốc không chứa các giá trị không hợp lệ trước khi chuyển đổi.
Tùy thuộc vào cài đặt chế độ SQL, việc chuyển đổi có thể thay vì trả về 0 mà gây ra lỗi hoặc NULL. Luôn xác nhận cấu hình của môi trường sản xuất của bạn.
7.2 Lựa chọn độ chính xác và kiểu Signed/Unsigned
- Đối với các giá trị có phần thập phân, chuyển đổi sang
DECIMALhoặcFLOAT - Nếu có khả năng giá trị âm, sử dụng
SIGNED; nếu các giá trị là số nguyên dương hoàn toàn, sử dụngUNSIGNED
Luôn chọn kiểu phù hợp dựa trên đặc điểm dữ liệu của bạn.
7.3 Ảnh hưởng đến chỉ mục
Sử dụng các hàm chuyển đổi kiểu như CAST hoặc CONVERT trong các mệnh đề WHERE hoặc ORDER BY có thể ngăn chỉ mục được sử dụng, dẫn đến suy giảm hiệu năng.
SELECT * FROM users WHERE CAST(user_id AS SIGNED) = 1000;
-- Even if user_id has an index, it is often not used
Đối với các bộ dữ liệu lớn hoặc các truy vấn quan trọng về hiệu năng, tốt nhất là thống nhất kiểu cột trong thiết kế schema để tránh các chuyển đổi không cần thiết.
7.4 Không nên phụ thuộc quá mức vào chuyển đổi ngầm
Chuyển đổi kiểu ngầm trong MySQL rất tiện lợi, nhưng có thể dẫn đến hành vi không mong muốn. Đối với logic quan trọng, luôn sử dụng CAST hoặc CONVERT một cách rõ ràng.
SELECT '100a' + 20;
-- Result: 100 (only the leading numeric portion is used)
Để tránh các lỗi tiềm ẩn và sự không nhất quán dữ liệu, hãy biến việc chuyển đổi rõ ràng thành thói quen.
7.5 Xác thực kiểu dữ liệu ở giai đoạn nhập dữ liệu
Khi thiết kế cơ sở dữ liệu, lưu trữ dữ liệu số dưới dạng kiểu số và dữ liệu chuỗi dưới dạng kiểu chuỗi. Giảm thiểu nhu cầu chuyển đổi thông qua thiết kế schema hợp lý là một trong những cách hiệu quả nhất để ngăn ngừa vấn đề.
8. Tóm tắt
Chuyển đổi kiểu giữa chuỗi và số trong MySQL là một chủ đề không thể tránh khỏi trong xử lý dữ liệu hàng ngày, tổng hợp và vận hành hệ thống. Trong bài viết này, chúng tôi đã đề cập đến mọi thứ từ cách sử dụng cơ bản đến các kỹ thuật nâng cao và các biện pháp phòng ngừa quan trọng.
Đối với chuyển đổi chuỗi sang số, các phương pháp rõ ràng như CAST và CONVERT có sẵn. Mặc dù chuyển đổi ngầm thường được sử dụng trong thực tế, việc ưu tiên chuyển đổi rõ ràng sẽ nâng cao độ tin cậy và chất lượng dữ liệu. Ngược lại, chuyển đổi số sang chuỗi cũng được sử dụng rộng rãi để định dạng ID, mã và tạo ra các thông điệp đầu ra.
In addition, techniques such as date-related applications, aggregation and sorting, and error detection demonstrate how powerful type conversion can be in real-world scenarios. However, conversion also carries potential pitfalls and performance impacts. Always follow the best practices discussed above.
By mastering type conversion properly, you can significantly expand your ability to manipulate data effectively in MySQL.
We hope this article supports your daily work and learning.
9. Câu hỏi thường gặp (FAQ)
Q1. Điều gì sẽ xảy ra nếu tôi CAST một chuỗi như ‘abc’ thành số?
Trong MySQL, khi cố gắng chuyển đổi một chuỗi sang kiểu số (như SIGNED hoặc UNSIGNED), MySQL sẽ trả về phần số đầu tiên nếu có; nếu không, nó sẽ trả về 0.
SELECT CAST('abc' AS SIGNED); -- Result: 0
SELECT CAST('123abc' AS SIGNED); -- Result: 123
Tuy nhiên, tùy thuộc vào chế độ SQL (ví dụ, STRICT_TRANS_TABLES), kết quả có thể là lỗi hoặc NULL.
Q2. Tôi nên sử dụng CAST hay CONVERT?
Đối với việc chuyển đổi kiểu dữ liệu chung (số, chuỗi, ngày, v.v.), việc sử dụng CAST được khuyến nghị vì nó tuân theo chuẩn SQL. Đối với chuyển đổi bộ ký tự, bạn phải sử dụng hàm CONVERT cùng với mệnh đề USING. Hãy chọn dựa trên trường hợp sử dụng của bạn.
Q3. Chuyển đổi kiểu ngầm định có đủ không?
Chuyển đổi ngầm định có thể hoạt động cho các truy vấn nhỏ hoặc trong quá trình thử nghiệm, nhưng đối với tổng hợp quan trọng và phát triển hệ thống sản xuất, việc chuyển đổi rõ ràng (CAST hoặc CONVERT) được khuyến nghị mạnh mẽ. Việc viết các chuyển đổi rõ ràng giúp ngăn ngừa hành vi không mong muốn và lỗi.
Q4. Việc sử dụng chuyển đổi kiểu trong WHERE hoặc ORDER BY có làm mất hiệu lực của các chỉ mục không?
Có. Áp dụng các hàm như CAST hoặc CONVERT lên một cột có thể ngăn MySQL sử dụng các chỉ mục được định nghĩa trên cột đó.
Nếu cần truy vấn hiệu năng cao trên các bộ dữ liệu lớn, hợp nhất kiểu dữ liệu của các cột từ trước hoặc cân nhắc sử dụng các truy vấn con hoặc cột sinh ra.
Q5. Chuyển đổi kiểu có an toàn cho số thập phân hoặc số lớn không?
Sử dụng DECIMAL hoặc FLOAT có thể giữ độ chính xác, nhưng vẫn có thể xảy ra lỗi làm tròn, mất độ chính xác hoặc cắt bớt. Luôn chỉ định độ chính xác và quy mô đủ cho yêu cầu của bạn.
Q6. Sự khác biệt giữa sắp xếp dưới dạng chuỗi và sắp xếp dưới dạng số là gì?
Khi sắp xếp dưới dạng chuỗi, các giá trị như '10' có thể xuất hiện trước '2' do thứ tự từ điển. Nếu bạn muốn thứ tự số, luôn thực hiện chuyển đổi kiểu trước khi sắp xếp.


