Konvertieren Sie INT in VARCHAR SQL


341

Ich verwende Sybase und mache eine Auswahl, die mir eine Spalte mit dem Namen "iftype" zurückgibt, aber der Typ ist int und ich muss in varchar konvertieren. Wenn ich versuche, die Auswahl ohne die Konvertierungsfunktion durchzuführen, wird folgende Fehlermeldung angezeigt:

Fehlercode 257, SQL-Status 37000: Eine implizite Konvertierung vom Datentyp 'VARCHAR' nach 'INT' ist nicht zulässig. Verwenden Sie die CONVERT-Funktion, um diese Abfrage auszuführen.

Ich weiß nicht, wie ich die Funktion implementieren soll CONVERT. Kann mir bitte jemand helfen?


Antworten:


593

Verwenden Sie die Konvertierungsfunktion.

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

8
Laut dem Fehler ist es zu VARCHAR, INTaber ich beantworte seine Frage, nicht die Fehlermeldung.
Tobberoth

2
Vielen Dank. Aber jetzt habe ich einen anderen Fehler. Wenn ich versuche, diese Art von Auswahl durchzuführen: SELECT CONVERT (varchar (10), Feldname) FROM Tabellenname. Oder sogar die normale wie: SELECT Feldname FROM Tabellenname. Beide sind richtig. Ich weiß nicht warum. Wenn ich jedoch versuche, am Ende der Auswahl ein "Wo" zu verwenden, wobei die Konvertierung verwendet wird oder nicht, wird der gleiche Fehler angezeigt: Die implizite Konvertierung vom Datentyp 'VARCHAR' in 'INT' ist nicht zulässig. Verwenden Sie die CONVERT-Funktion, um diese Abfrage auszuführen
Murilo

3
@ Murilo Das liegt daran, dass der Fehler nicht von Ihrer Meinung ist. Der Fehler zeigt an, dass Ihr Code versucht, a zu verwenden, varcharwo ein intbenötigt wird. Sie müssen Ihre eigentliche SQL-Anweisung schreiben, damit wir Ihnen helfen können.
Tobberoth

14
@ Tobberoth, für das, was es wert ist, bin ich gerade hier gelandet, indem ich gegoogelt habe. Ein Teil des Werts von SO besteht darin, Antworten auf fast alle Fragen zu erhalten, auch auf grundlegende.
KyleMit

6
Ich denke, es sollte für den varchar(11)Fall sein, dass die Zahl eine große negative Zahl ist.
Trisped

100

Verwenden Sie die STRFunktion:

SELECT STR(field_name) FROM table_name

Argumente

float_expression

Ist ein Ausdruck des ungefähren numerischen (float) Datentyps mit einem Dezimalpunkt.

Länge

Ist die Gesamtlänge. Dies umfasst Dezimalstellen, Vorzeichen, Ziffern und Leerzeichen. Der Standardwert ist 10.

Dezimal

Ist die Anzahl der Stellen rechts vom Dezimalpunkt. Die Dezimalstelle muss kleiner oder gleich 16 sein. Wenn die Dezimalstelle größer als 16 ist, wird das Ergebnis auf 16 Stellen rechts vom Dezimalpunkt abgeschnitten.

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


3
STR()sollte die richtige Antwort sein, ist es einfacher und weniger fehleranfällig als die Alternativen.
HerrimanCoder

7
Aus irgendeinem seltsamen Grund funktionierte dies bei mir nicht, da vor dem Text ein Tab eingefügt wurde, keine Ahnung warum. Die ausgewählte Lösung hat jedoch funktioniert.
MaQy

3
str Pads Leerzeichen auf der Vorderseite der konvertierten Nummer macht es unbrauchbar
m12lrpv

13
Verwenden Sie LTRIM (STR ())
Ashilon

2
STR () gibt Leerzeichen an der Vorderseite der Variablen an, die Sie in einen String konvertieren. Es kann eine gute Wahl sein, Dezimalvariablen zu konvertieren, aber nicht für Int.
Ebleme

23

Sie können folgende CASTFunktion verwenden:

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

3

Eigentlich müssen Sie STR oder Convert nicht verwenden. Wählen Sie einfach 'xxx' + LTRIM (1) erledigt den Job. Möglicherweise verwendet LTRIM Convert oder STR unter der Haube.

LTRIM macht auch die Bereitstellung von Länge überflüssig und normalerweise ist Standard 10 für die Konvertierung von Ganzzahlen in Zeichenfolgen ausreichend.

SELECT LTRIM(ColumnName) FROM TableName

0

CONVERT(DATA_TYPE , Your_Column)ist die Syntax für die CONVERT-Methode in SQL. Mit dieser Konvertierungsfunktion können wir die Daten der Spalte auf der rechten Seite des Kommas (,) in den Datentyp auf der linken Seite des Kommas (,) konvertieren. Siehe Beispiel unten.

SELECT CONVERT (VARCHAR(10), ColumnName) FROM TableName
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.