2010-06-30 42 views
23

Tôi có hai cột trong bảng SQL, fooId (int) và fooName (varchar).Kết hợp cột VARCHAR với cột int

Có cách nào để chọn cả hai cột dưới dạng một cột có khoảng trống giữa chúng?

select fooId + ' ' + fooName as fooEntity 
from mytable 

Chúng là các loại khác nhau nên tôi gặp lỗi.

Trường này sẽ được dữ liệu trực tiếp trong điều khiển trong ứng dụng web.

SQL Server 2008

(tôi là một chút của một người mới bắt đầu sql)

+0

có thể trùng lặp của [Làm cách nào để ghép nối số và chuỗi thành số định dạng trong T-SQL?] (Http://stackoverflow.com/questions/951320/how-to-concatenate-numbers-and-strings-to-format -numbers-in-t-sql) – LittleBobbyTables

Trả lời

31

String nối là khác nhau giữa các cơ sở dữ liệu, vì vậy nó giúp để biết được cơ sở dữ liệu bởi vì bạn cần phải biết:

  1. Phương pháp nối/điều hành
  2. Nếu cơ sở dữ liệu xử lý kiểu dữ liệu ngầm chuyển đổi

Máy chủ SQL không chuyển đổi ẩn số thành giá trị chuỗi:

SELECT CAST(fooid AS VARCHAR(10)) + ' ' + fooname 

... vì vậy bạn cần sử dụng CAST (or CONVERT) để thay đổi rõ ràng loại dữ liệu thành kiểu dữ liệu dựa trên văn bản.

Đối Oracle & PostgreSQL, sử dụng các đường ống kép để nối chuỗi:

SELECT fooid || ' ' || fooname 

Đối MySQL, bạn có thể sử dụng CONCAT function:

SELECT CONCAT(fooid, ' ', fooname) 
+0

SQL Server 2008. Tôi đã chỉnh sửa bài đăng gốc. – Gabe

+0

Ah, cái này hoàn chỉnh hơn câu trả lời của tôi. +1 –

+0

Rất rõ ràng và chi tiết. Trả lời mọi trường hợp +1 – Nik

2

Hãy thử điều này:

SELECT Convert(foold, SQL_CHAR) + ' ' + fooName FROM mytable 

hoặc

SELECT Cast(foold AS SQL_CHAR(10)) + ' ' + fooName FROM mytable 
0

Yeah đó nên được OK, miễn là trường bị ràng buộc là một chuỗi.

Lỗi bạn nhận được là gì?

0

Tôi không chắc chắn nếu đó là SQL chuẩn, nhưng PostgreSQL sử dụng toán tử || để nối chuỗi. + có nghĩa là bổ sung số.

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