Làm cách nào để chuyển đổi một chuỗi thành số trong MySQL?
Khi một toán tử được sử dụng với các toán hạng thuộc các loại khác nhau, việc chuyển đổi loại xảy ra để làm cho các toán hạng tương thích. Một số chuyển đổi xảy ra ngầm. Ví dụ: MySQL tự động chuyển đổi chuỗi thành số khi cần thiết và ngược lại Show mysql> Cũng có thể chuyển đổi một số thành một chuỗi rõ ràng bằng hàm. Chuyển đổi xảy ra hoàn toàn với hàm vì nó mong đợi các đối số chuỗi mysql> Xem phần sau trong phần này để biết thông tin về bộ ký tự của chuyển đổi số thành chuỗi ẩn và để biết các quy tắc đã sửa đổi áp dụng cho câu lệnh mysql>0 Các quy tắc sau mô tả cách chuyển đổi xảy ra đối với các hoạt động so sánh
Để biết thông tin về việc chuyển đổi giá trị từ loại tạm thời này sang loại tạm thời khác, hãy xem Phần 11. 2. 8, “Chuyển đổi giữa các loại ngày và giờ” Các ví dụ sau minh họa việc chuyển đổi chuỗi thành số cho các hoạt động so sánh mysql>2 Để so sánh cột chuỗi với số, MySQL không thể sử dụng chỉ mục trên cột để tra cứu giá trị nhanh chóng. Nếu mysql>25 là một cột chuỗi được lập chỉ mục, chỉ mục không thể được sử dụng khi thực hiện tra cứu trong câu lệnh sau mysql>4 Lý do cho điều này là có nhiều chuỗi khác nhau có thể chuyển đổi thành giá trị mysql>26, chẳng hạn như mysql>27, mysql>28 hoặc mysql>29 So sánh giữa các số dấu phẩy động và các giá trị lớn của loại mysql>40 là gần đúng vì số nguyên được chuyển đổi thành dấu phẩy động có độ chính xác kép trước khi so sánh, không có khả năng biểu diễn chính xác tất cả các số nguyên 64 bit. Ví dụ: giá trị số nguyên 253 + 1 không thể biểu thị dưới dạng số float và được làm tròn thành 253 hoặc 253 + 2 trước khi so sánh số float, tùy thuộc vào nền tảng Để minh họa, chỉ phép so sánh đầu tiên sau đây so sánh các giá trị bằng nhau, nhưng cả hai phép so sánh đều trả về giá trị đúng (1) mysql>0 Khi chuyển đổi từ chuỗi sang dấu phẩy động và từ số nguyên sang dấu phẩy động xảy ra, chúng không nhất thiết xảy ra theo cùng một cách. Số nguyên có thể được chuyển đổi thành dấu phẩy động bởi CPU, trong khi chuỗi được chuyển đổi từng chữ số trong một phép toán liên quan đến phép nhân dấu phẩy động. Ngoài ra, kết quả có thể bị ảnh hưởng bởi các yếu tố như kiến trúc máy tính hoặc phiên bản trình biên dịch hoặc mức độ tối ưu hóa. Một cách để tránh những vấn đề như vậy là sử dụng để một giá trị không được chuyển đổi hoàn toàn thành một số dấu phẩy động mysql>1 Để biết thêm thông tin về phép so sánh dấu phẩy động, hãy xem Phần B. 3. 4. 8, “Các vấn đề với giá trị dấu phẩy động” Máy chủ bao gồm mysql>42, một thư viện chuyển đổi cung cấp cơ sở cho việc chuyển đổi được cải thiện giữa giá trị chuỗi hoặc giá trị mysql>43 và số giá trị gần đúng ( mysql>44/ mysql>45)
Do các chuyển đổi do thư viện này tạo ra trong một số trường hợp khác với các kết quả không phải ____142, nên có khả năng xảy ra sự không tương thích trong các ứng dụng dựa trên các kết quả trước đó. Ví dụ: các ứng dụng phụ thuộc vào kết quả chính xác cụ thể từ các chuyển đổi trước đó có thể cần điều chỉnh để phù hợp với độ chính xác bổ sung Thư viện mysql>42 cung cấp các chuyển đổi với các thuộc tính sau. mysql>49 đại diện cho một giá trị có mysql>43 hoặc đại diện chuỗi và mysql>01 đại diện cho số dấu phẩy động ở định dạng nhị phân gốc (IEEE)
Các thuộc tính này ngụ ý rằng các chuyển đổi mysql>01 -> mysql>49 -> mysql>01 là không mất dữ liệu trừ khi mysql>01 là mysql>14, mysql>15 hoặc mysql>16. Các giá trị sau không được hỗ trợ vì tiêu chuẩn SQL xác định chúng là các giá trị không hợp lệ cho mysql>44 hoặc mysql>45 Đối với chuyển đổi mysql>49 -> mysql>01 -> mysql>49, điều kiện đủ để không mất dữ liệu là mysql>49 sử dụng độ chính xác từ 15 chữ số trở xuống, không phải là giá trị bất thường, mysql>14, mysql>15 hoặc mysql>16. Trong một số trường hợp, việc chuyển đổi không mất dữ liệu ngay cả khi mysql>49 có độ chính xác hơn 15 chữ số, nhưng điều này không phải lúc nào cũng đúng Chuyển đổi ngầm định một giá trị số hoặc thời gian thành chuỗi tạo ra một giá trị có bộ ký tự và đối chiếu được xác định bởi các biến hệ thống và. (Các biến này thường được đặt với mysql>79. Để biết thông tin về bộ ký tự kết nối, hãy xem Phần 10. 4, “Bộ ký tự kết nối và đối chiếu”. ) Điều này có nghĩa là một chuyển đổi như vậy dẫn đến một chuỗi ký tự (không phải nhị phân) (giá trị mysql>80, mysql>81 hoặc mysql>82), ngoại trừ trường hợp bộ ký tự kết nối được đặt thành mysql>83. Trong trường hợp đó, kết quả chuyển đổi là một chuỗi nhị phân (giá trị mysql>84, mysql>85 hoặc mysql>86) Đối với các biểu thức số nguyên, các nhận xét trước về đánh giá biểu thức áp dụng hơi khác cho phép gán biểu thức; mysql>7 Trong trường hợp này, bảng trong cột kết quả từ biểu thức có kiểu mysql>87 hoặc mysql>88 tùy thuộc vào độ dài của biểu thức số nguyên. Nếu độ dài tối đa của biểu thức không vừa với một mysql>87, thì thay vào đó, hãy sử dụng mysql>88. Độ dài được lấy từ giá trị mysql>21 của siêu dữ liệu tập kết quả mysql>22 (xem Cấu trúc dữ liệu cơ bản của API C). Điều này có nghĩa là bạn có thể buộc mysql>88 thay vì mysql>87 bằng cách sử dụng một biểu thức đủ dài Làm cách nào để chuyển đổi chuỗi thành số trong SQL?TO_NUMBER chuyển đổi một chuỗi thành một số kiểu dữ liệu NUMERIC . TO_CHAR thực hiện thao tác ngược lại; . CAST và CONVERT có thể được sử dụng để chuyển đổi một chuỗi thành một số của bất kỳ loại dữ liệu nào. Ví dụ: bạn có thể chuyển đổi một chuỗi thành một số kiểu dữ liệu INTEGER.
Làm cách nào để chuyển đổi kiểu dữ liệu trong MySQL?Hàm CONVERT() của MySQL được sử dụng để chuyển đổi một giá trị từ một kiểu dữ liệu này sang một kiểu dữ liệu khác. Hàm CONVERT() của MySQL cũng được sử dụng để chuyển đổi một giá trị từ bộ ký tự này sang bộ ký tự khác. Nó chấp nhận hai tham số là giá trị đầu vào và loại được chuyển đổi trong.
TO_NUMBER trong MySQL là gì?Hàm TO_NUMBER chuyển đổi đối số của nó thành kiểu dữ liệu DECIMAL . Đối số có thể là biểu diễn chuỗi ký tự của một số hoặc một biểu thức số.
CAST() trong MySQL là gì?Hàm CAST() chuyển đổi một giá trị (thuộc bất kỳ loại nào) thành kiểu dữ liệu đã chỉ định . |