2010-06-30 9 views
23

Ich habe zwei Spalten in einer SQL-Tabelle, fooId (int) und fooName (varchar).Kombiniere varchar Spalte mit int Spalte

Gibt es eine Möglichkeit, sie beide als eine Spalte mit einem Abstand zwischen ihnen auszuwählen?

Sie sind verschiedene Typen, so bekomme ich einen Fehler.

Dieses Feld wird direkt in einem Steuerelement in der Web-App verbunden.

SQL Server 2008

(Ich bin ein bisschen ein SQL-Anfänger)

+0

mögliche Duplikate von [Wie verketten Zahlen und Zeichenfolgen zu formatieren Zahlen in T-SQL?] (Http://stackoverflow.com/questions/951320/how-to-concatenate-numbers-and-strings-to-format -numbers-in-t-sql) – LittleBobbyTables

Antwort

31

String Verkettung unterscheidet zwischen Datenbanken, so hilft es, die Datenbank zu wissen, weil Sie wissen müssen:

  1. Die Verkettung Methode/Betreiber
  2. Wenn die Datenbank behandelt implizite Datentypumwandlung

SQL Server führt keine implizite Konvertierung von numerischen in Zeichenfolgenwerte durch:

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

... also müssen Sie CAST (or CONVERT) verwenden, um den Datentyp explizit in einen textbasierten Datentyp zu ändern.

Für Oracle & PostgreSQL, verwenden Sie die Doppelrohrstränge verketten:

SELECT fooid || ' ' || fooname 

Für MySQL, können Sie die CONCAT function:

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

SQL Server 2008. Ich habe den ursprünglichen Beitrag bearbeitet. – Gabe

+0

Ah, dieser ist viel vollständiger als meine Antwort. +1 –

+0

Sehr klar und detailliert. Antworten auf jeden Fall +1 – Nik

2

Try this:

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

oder

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

Ja, das OK sein sollte, solange das gebundene Feld eine Zeichenfolge ist.

Was ist der Fehler, den Sie bekommen?

0

Ich bin nicht sicher, ob Es ist Standard-SQL, aber PostgreSQL verwendet den Operator || für die Verkettung von Strings. + bedeutet numerische Addition.

Verwandte Themen