Chuyển đổi INT sang VARCHAR SQL


341

Tôi đang sử dụng Sybase và tôi đang thực hiện một lựa chọn trả về cho tôi một cột có tên là "iftype", nhưng kiểu của nó là int và tôi cần chuyển đổi thành varchar. Khi tôi cố gắng chọn mà không có chức năng chuyển đổi, tôi gặp lỗi này:

Mã lỗi 257, trạng thái SQL 37000: Không được phép chuyển đổi ngầm định từ kiểu dữ liệu 'VARCHAR' sang 'INT'. Sử dụng hàm CONVERT để chạy truy vấn này.

Tôi không biết làm thế nào để thực hiện chức năng CONVERT. Có ai có thể giúp tôi không ?


5
Tôi nghĩ rằng bạn cần điều này: msdn.microsoft.com/en-us/l Library / ms187928.aspx
Lajos Veres

Câu trả lời:


593

Sử dụng chức năng chuyển đổi.

SELECT CONVERT(varchar(10), field_name) FROM table_name

8
Theo báo lỗi, nó VARCHARđến INTnhưng tôi trả lời câu hỏi của anh, chứ không phải thông báo lỗi.
Tobberoth

2
Cảm ơn. Nhưng bây giờ tôi đã có một lỗi khác. Khi tôi cố gắng thực hiện loại Chọn này: CHỌN CHUYỂN ĐỔI (varchar (10), field_name) TỪ tên_bảng. Hoặc thậm chí là một cái bình thường như: CHỌN field_name TỪ tên_bảng. Cả hai đều đúng. Tôi không biết tại sao. Nhưng khi tôi cố gắng nhưng "ở đâu" ở cuối phần chọn, sử dụng chuyển đổi hay không, tôi cũng gặp lỗi tương tự: Chuyển đổi ngầm định từ kiểu dữ liệu 'VARCHAR' sang 'INT' không được phép. Sử dụng chức năng CONVERT để chạy truy vấn này
Murilo

3
@Murilo Đó là vì lỗi không phải do bạn nghĩ. Lỗi cho bạn biết rằng mã của bạn đang cố sử dụng một varcharnơi intcần thiết. Bạn cần viết câu lệnh SQL thực tế của bạn để chúng tôi giúp bạn.
Tobberoth

14
@Tobberoth, vì những gì nó đáng giá, tôi vừa đáp xuống đây bằng cách googling. Một phần giá trị của SO là nhận được câu trả lời cho hầu hết mọi câu hỏi, ngay cả những câu hỏi cơ bản.
KyleMit

6
Tôi nghĩ rằng nó nên được varchar(11)trong trường hợp số là một số âm lớn.
Đã xem

100

Sử dụng STRchức năng:

SELECT STR(field_name) FROM table_name

Tranh luận

float_expression

Là một biểu thức của kiểu dữ liệu số (float) gần đúng với dấu thập phân.

chiều dài

Là tổng chiều dài. Điều này bao gồm dấu thập phân, dấu, chữ số và dấu cách. Mặc định là 10.

số thập phân

Là số vị trí bên phải dấu thập phân. số thập phân phải nhỏ hơn hoặc bằng 16. Nếu số thập phân lớn hơn 16 thì kết quả được cắt ngắn đến mười sáu vị trí bên phải dấu thập phân.

nguồn: https://msdn.microsoft.com/en-us/l Library / ms189527.aspx


3
STR()nên là câu trả lời chính xác, nó đơn giản và ít bị lỗi hơn các lựa chọn thay thế.
HerrimanCoder

7
Vì một số lý do kỳ lạ, điều này không hiệu quả với tôi vì nó đã thêm một tab ở phía trước văn bản, không biết tại sao. Giải pháp được lựa chọn đã làm việc mặc dù.
MaQy

3
không gian str ở mặt trước của số được chuyển đổi làm cho nó vô dụng
m12lrpv

13
Sử dụng LTRIM (STR ())
ashilon

2
STR () cung cấp khoảng trắng ở phía trước biến bạn chuyển đổi thành chuỗi. Nó có thể là một lựa chọn tốt để chuyển đổi các biến thập phân nhưng không phải cho Int.
Ebleme

23

Bạn có thể sử dụng CASTchức năng:

SELECT CAST(your_column_name AS varchar(10)) FROM your_table_name

3

Trên thực tế, bạn không cần phải sử dụng STR hoặc Convert. Chỉ cần chọn 'xxx' + LTRIM (1) thực hiện công việc. Có thể, LTRIM sử dụng Convert hoặc STR dưới mui xe.

LTRIM cũng loại bỏ nhu cầu cung cấp độ dài và thông thường 10 mặc định là đủ tốt để chuyển đổi số nguyên sang chuỗi.

SELECT LTRIM(ColumnName) FROM TableName

0

CONVERT(DATA_TYPE , Your_Column)là cú pháp cho phương thức CONVERT trong SQL. Từ hàm chuyển đổi này, chúng ta có thể chuyển đổi dữ liệu của Cột ở bên phải dấu phẩy (,) sang kiểu dữ liệu ở phía bên trái của dấu phẩy (,) Vui lòng xem ví dụ bên dưới.

SELECT CONVERT (VARCHAR(10), ColumnName) FROM TableName
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.