Ai đó gần đây đã hỏi tôi câu hỏi này và tôi nghĩ tôi sẽ đăng nó lên Stack Overflow để nhận một số đầu vào.Tại sao truyền/chuyển đổi từ int trả về dấu hoa thị
Bây giờ rõ ràng cả hai trường hợp sau đây đều được cho là không thành công.
# 1:
DECLARE @x BIGINT
SET @x = 100
SELECT CAST(@x AS VARCHAR(2))
lỗi hiển nhiên:
Msg 8115, Level 16, State 2, Line 3
Arithmetic overflow error converting expression to data type varchar.
# 2:
DECLARE @x INT
SET @x = 100
SELECT CAST(@x AS VARCHAR(2))
Không rõ ràng, nó trả về một * (Một mong chờ điều này là một số học tràn cũng?)
Bây giờ câu hỏi thực sự của tôi là, tại sao ??? Đây có phải chỉ đơn thuần là do thiết kế hoặc có lịch sử hoặc một cái gì đó nham hiểm đằng sau điều này?
Tôi đã xem một vài trang web và không thể nhận được câu trả lời thỏa đáng.
http://msdn.microsoft.com/en-us/library/aa226054(v=sql.80).aspx
Xin lưu ý tôi biết/hiểu rằng khi một số nguyên là quá lớn để được chuyển đổi sang một chuỗi có kích thước cụ thể mà nó sẽ được "chuyển đổi" để dấu hoa thị, đây là câu trả lời rõ ràng và Tôi ước gì tôi có thể hạ thấp mọi người mà vẫn tiếp tục đưa ra câu trả lời này. Tôi muốn biết tại sao dấu hoa thị được sử dụng và không phải là ngoại lệ được ném, ví dụ: lý do lịch sử vv ??
tra cứu mã ASCII thập phân của dấu hoa thị để giải quyết "bí ẩn". – dasblinkenlight
LOL, 42? Câu trả lời cho cuộc sống vũ trụ và mọi thứ khác ?? hehehe – Helix
@dasblinkenlight - Điều đó giải thích tại sao 'select *' trả về ** mọi thứ ** :). –