Объединить столбец varchar с столбцом int - PullRequest
25 голосов
/ 30 июня 2010

У меня есть два столбца в таблице SQL, fooId (int) и fooName (varchar).

Есть ли способ выбрать оба столбца с одним пробелом между ними?1005 *

select fooId + ' ' + fooName as fooEntity
from mytable

Они разных типов, поэтому я получаю сообщение об ошибке.

Это поле будет привязано к данным непосредственно в элементе управления в веб-приложении.

SQL Server 2008

(я немного новичок в SQL)

Ответы [ 5 ]

35 голосов
/ 30 июня 2010

Конкатенация строк различна для разных баз данных, поэтому она помогает узнать, какая база данных, потому что вам нужно знать:

  1. Метод конкатенации / оператор
  2. Если база данных обрабатывает неявное преобразование типов данных

SQL Server не выполняет неявное преобразование числовых значений в строковые:

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

... поэтому вам нужно использовать CAST (или CONVERT) для явного изменения типа данных на текстовый тип данных.

Для Oracle & PostgreSQL , используйте двойной канал для объединения строк:

SELECT fooid || ' ' || fooname

Для MySQL вы можете использовать функцию CONCAT :

SELECT CONCAT(fooid, ' ', fooname)
2 голосов
/ 30 июня 2010

Попробуйте это:

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

или

SELECT Cast( foold AS SQL_CHAR(10) ) + ' ' + fooName FROM mytable
0 голосов
/ 31 октября 2018

Я использую этот запрос в MS SQL

SELECT varcharColumn + CONVERT(VARCHAR(2), intColumn) AS foo

Предполагается, что varcharColumn равен нулю

SELECT ISNULL(varcharColumn, '') + CONVERT(VARCHAR(2), intColumn) AS foo
0 голосов
/ 30 июня 2010

Я не уверен, что это стандартный SQL, но PostgreSQL использует оператор || для конкатенации строк. + означает сложение чисел.

0 голосов
/ 30 июня 2010

Да, все должно быть в порядке, пока связанное поле является строкой.

Какую ошибку вы получаете?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...