Ubah INT menjadi VARCHAR SQL


341

Saya menggunakan Sybase dan saya melakukan pemilihan yang mengembalikan saya kolom yang disebut "iftype", tetapi tipenya int dan saya perlu mengubahnya menjadi varchar. Ketika saya mencoba melakukan pemilihan tanpa fungsi konversi saya mendapatkan kesalahan ini:

Kode kesalahan 257, SQL state 37000: Konversi implisit dari tipe data 'VARCHAR' ke 'INT' tidak diizinkan. Gunakan fungsi CONVERT untuk menjalankan kueri ini.

Saya tidak tahu cara mengimplementasikan fungsi CONVERT. Adakah yang bisa membantu saya?


Jawaban:


593

Gunakan fungsi konversi.

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

8
Menurut kesalahan, itu VARCHARuntuk INTtetapi saya menjawab pertanyaannya, bukan pesan kesalahan.
Tobberoth

2
Terima kasih. Tapi sekarang saya punya kesalahan lain. Ketika saya mencoba melakukan jenis Select: SELECT CONVERT (varchar (10), field_name) FROM table_name. Atau bahkan yang normal seperti: SELECT field_name FROM table_name. Keduanya benar. Saya tidak tahu kenapa. Tetapi ketika saya mencoba tetapi "di mana" di akhir pilih, menggunakan konversi atau tidak, saya mendapatkan kesalahan yang sama: Konversi implisit dari tipe data 'VARCHAR' ke 'INT' tidak diperbolehkan. Gunakan fungsi CONVERT untuk menjalankan kueri ini
Murilo

3
@ Murilo Itu karena kesalahannya bukan dari apa yang Anda pikirkan. Kesalahan memberi tahu Anda bahwa kode Anda mencoba menggunakan varchartempat yang intdiperlukan. Anda perlu menulis pernyataan SQL Anda yang sebenarnya agar kami dapat membantu Anda.
Tobberoth

14
@Tobberoth, untuk apa nilainya, saya baru saja mendarat di sini dengan googling. Bagian dari nilai SO adalah mendapatkan jawaban untuk hampir semua pertanyaan, bahkan yang mendasar.
KyleMit

6
Saya pikir itu harus varchar(11)seandainya jumlahnya adalah angka negatif yang besar.
Ditebangi

100

Gunakan STRfungsinya:

SELECT STR(field_name) FROM table_name

Argumen

float_expression

Merupakan ekspresi dari perkiraan tipe data numerik (float) dengan titik desimal.

panjangnya

Apakah total panjangnya. Ini termasuk titik desimal, tanda, angka, dan spasi. Standarnya adalah 10.

desimal

Apakah jumlah tempat di sebelah kanan titik desimal. desimal harus kurang dari atau sama dengan 16. Jika desimal lebih dari 16 maka hasilnya dipotong ke enam belas tempat di sebelah kanan titik desimal.

sumber: https://msdn.microsoft.com/en-us/library/ms189527.aspx


3
STR()seharusnya jawaban yang benar, lebih sederhana dan lebih rentan kesalahan daripada alternatif.
HerrimanCoder

7
Untuk beberapa alasan aneh, ini tidak berhasil bagi saya karena menambahkan tab di depan teks, tidak tahu mengapa Solusi yang dipilih ternyata berhasil.
MaQy

3
str menempatkan spasi di bagian depan nomor yang dikonversi sehingga tidak berguna
m12lrpv

13
Gunakan LTRIM (STR ())
ashilon

2
STR () memberikan spasi putih di bagian depan variabel yang Anda konversi menjadi string. Ini bisa menjadi pilihan yang baik untuk mengkonversi variabel desimal tetapi tidak untuk Int.
Ebleme

23

Anda dapat menggunakan CASTfungsi:

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

3

Sebenarnya Anda tidak perlu menggunakan STR atau Konversi. Cukup pilih 'xxx' + LTRIM (1) melakukan pekerjaan. Kemungkinan, LTRIM menggunakan Konversi atau STR di bawah tenda.

LTRIM juga menghilangkan kebutuhan untuk menyediakan panjang dan biasanya standar 10 cukup baik untuk konversi integer ke string.

SELECT LTRIM(ColumnName) FROM TableName

0

CONVERT(DATA_TYPE , Your_Column)adalah sintaks untuk metode CONVERT dalam SQL. Dari fungsi konversi ini kita dapat mengonversi data Kolom yang ada di sisi kanan koma (,) ke tipe data di sisi kiri koma (,) Silakan lihat contoh di bawah ini.

SELECT CONVERT (VARCHAR(10), ColumnName) FROM TableName
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.