Convertire INT in VARCHAR SQL


341

Sto usando Sybase e sto facendo una selezione che mi restituisce una colonna chiamata "iftype", ma il suo tipo è int e devo convertirlo in varchar. Quando provo a fare la selezione senza la funzione di conversione ottengo questo errore:

Codice errore 257, stato SQL 37000: la conversione implicita dal tipo di dati "VARCHAR" a "INT" non è consentita. Utilizzare la funzione CONVERT per eseguire questa query.

Non so come implementare la funzione CONVERT. Qualcuno mi può aiutare per favore ?


5
Penso che tu abbia bisogno di questo: msdn.microsoft.com/en-us/library/ms187928.aspx
Lajos Veres

Risposte:


593

Usa la funzione di conversione.

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

8
Secondo l'errore, è VARCHARa INTma sto rispondendo alla sua domanda, non il messaggio di errore.
Tobberoth,

2
Grazie. Ma ora ho un altro errore. Quando provo a fare questo tipo di Select: SELECT CONVERT (varchar (10), field_name) FROM table_name. O anche quello normale come: SELECT field_name FROM table_name. Sono corretti entrambi. Non so perché. Ma quando provo a fare un "dove" alla fine della selezione, usando la conversione o no, ottengo lo stesso errore: la conversione implicita dal tipo di dati 'VARCHAR' a 'INT' non è consentita. Utilizzare la funzione CONVERT per eseguire questa query
Murilo

3
@Murilo Questo perché l'errore non deriva da ciò che pensi. L'errore ti dice che il tuo codice sta cercando di usare un varchardove intè necessario. È necessario scrivere la tua istruzione SQL effettiva per consentirci di aiutarti.
Tobberoth,

14
@Tobberoth, per quello che vale, sono appena arrivato qui da google. Parte del valore di SO è ottenere risposte a quasi tutte le domande, anche di base.
KyleMit

6
Penso che dovrebbe essere varchar(11)nel caso in cui il numero sia un numero negativo elevato.
Trisped il

100

Usa la STRfunzione:

SELECT STR(field_name) FROM table_name

argomenti

float_expression

Espressione del tipo di dati numerico approssimativo (float) con un punto decimale.

lunghezza

È la lunghezza totale. Ciò include il punto decimale, il segno, le cifre e gli spazi. L'impostazione predefinita è 10.

decimale

È il numero di posizioni a destra del punto decimale. il decimale deve essere inferiore o uguale a 16. Se il decimale è maggiore di 16, il risultato viene troncato a sedici posizioni a destra del punto decimale.

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


3
STR()dovrebbe essere la risposta corretta, è più semplice e meno soggetta ad errori rispetto alle alternative.
HerrimanCoder

7
Per qualche strana ragione, questo non ha funzionato per me in quanto stava aggiungendo una scheda davanti al testo, non ho idea del perché. La soluzione selezionata ha funzionato però.
MaQy

3
str riempie gli spazi sulla parte anteriore del numero convertito rendendolo inutile
m12lrpv

13
Usa LTRIM (STR ())
ashilon il

2
STR () fornisce spazi bianchi nella parte anteriore della variabile convertita in stringa. Può essere una buona scelta per convertire le variabili decimali ma non per Int.
Ebleme,

23

Puoi usare la CASTfunzione:

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

3

In realtà non è necessario utilizzare STR or Convert. Basta selezionare 'xxx' + LTRIM (1) fa il lavoro. Forse, LTRIM utilizza Convert o STR sotto il cofano.

LTRIM rimuove anche la necessità di fornire lunghezza e di solito il valore predefinito 10 è abbastanza buono per la conversione da intero a stringa.

SELECT LTRIM(ColumnName) FROM TableName

0

CONVERT(DATA_TYPE , Your_Column)è la sintassi per il metodo CONVERT in SQL. Da questa funzione di conversione possiamo convertire i dati della colonna che si trova sul lato destro della virgola (,) nel tipo di dati sul lato sinistro della virgola (,) Vedi l'esempio seguente.

SELECT CONVERT (VARCHAR(10), ColumnName) FROM TableName
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.