2015-05-01 13 views
5

Tôi có một bảng _users với một trường idbigint(24).truy vấn chọn mysql cho kết quả trong đó ID (một số) bằng văn bản

Kết quả của truy vấn này:

SELECT * FROM `_users` WHERE `id`='5text' 

là hàng với id = 5. Tôi hy vọng không có kết quả nào vì '5text' không phải là số. Sao có thể như thế được?

+0

Bạn đang cố gắng nói gì? Vui lòng giải thích thêm một số chi tiết. – ShihabSoft

+1

Tôi hiểu làm thế nào điều này có thể là một vấn đề, vì nó có thể trả lại hàng hợp lệ mà không có gì để làm với id được truy vấn – Miguel

Trả lời

4

MySQL ngầm chuyển đổi chuỗi thành số khi đánh giá biểu thức để làm cho toán hạng tương thích.

Từ các tài liệu:

Nếu một trong các đối số là một giá trị thập phân, so sánh phụ thuộc vào lập luận khác. Đối số được so sánh dưới dạng giá trị thập phân nếu đối số khác là giá trị thập phân hoặc số nguyên hoặc giá trị dấu phẩy động nếu đối số khác là giá trị dấu phẩy động.

Xem bài viết Type Conversion in Expression Evaluation để biết giải thích và ví dụ chi tiết.

Các vấn đề liên quan