Chủ Nhật, 1 tháng 7, 2012

Cộng chuỗi với số trong MS Sql ?

Hi như chúng ta đã quen với việc lập trình C# khi cộng 1 chuỗi với 1 số thì kết quả trả về sẽ là một chuỗi. Hôm nay ngồi viết câu truy vấn dưới sql thì phát hiện 1 điều ngược lại.
Khi select 1 chuỗi + với 1 số sql sẽ cố convert qua kiểu số. Nếu chuỗi không thể convert được qua kiểu số thì câu truy vấn sẽ báo lỗi.

Ví dụ trên C#:
  1. object o1 = "0111" + 5;  
  2. // kết quả sẽ là "01115"  
  3.   
  4. object o2 = "0111aa" + 5;  
  5. // kết quả sẽ là "0111aa5"  
Trong Sql:
  1. select '0111' + 5  
  2. -- kết quả 116  
  3.  
  4. select '0111aa' + 5  
  5. -- báo lỗi: Conversion failed when converting the varchar value '0111aa' to data type int
Nếu muốn truy vấn thành công bắt buộc phải ép số về chuỗi.

  1. select '0111aa' + cast(5 as varchar)  
  2. -- kết quả: 0111aa5  

Không có nhận xét nào :

Đăng nhận xét