2013-07-31 3 views
0

Как я могу конкатрировать два поля и текст между ними? Я пробовал все следующие, и ничего не работает ...Объединить два поля SQL с текстом

([fldCode1] || ':' ||[fldCode2]) AS Method 

([fldCode1] + ':' + [fldCode2]) AS Method 

([fldCode1] & ':' & [fldCode2]) AS Method 
               *** & cannot be used with varchar 
+0

Для среднего, например, то, что не имеет «ничего работал» означает? Остальные два * должны * терпеть неудачу, потому что вы заимствовали синтаксис конкатенации с других языков (предположим, PHP и VB). –

ответ

5

Это должно работать

select [fldCode1] + ':' + [fldCode2] 
from tab 

или если столбцы являются числовыми

select cast([fldCode1] as varchar(100)) + ':' + cast([fldCode2] as varchar(100)) 
from tab 
+0

Пожалуйста, [без varchar без длины] (http://sqlblog.com/blogs/aaron_bertrand/archive/2009/10/09/bad-habits-to-kick-declaring-varchar-without-length.aspx). –

+0

@Parado. , , Вы должны всегда включать длину, когда вы указываете 'varchar'. Несмотря на то, что по умолчанию для 'cast' и' convert', значение по умолчанию - другое (и неудобное) по умолчанию в других контекстах. –

+0

@ Gordon даже здесь по умолчанию может быть не нормально, если в одном столбце содержится> 30 символов ... –

3

Первые и последние формы недействительны, но второй, конечно, нормально, если столбцы являются строками. Если столбцы числовые, дата и т.д., вам необходимо будет конвертировать их первыми:

SELECT Method = CONVERT(VARCHAR(255), fldCode1) 
     + ':' + CONVERT(VARCHAR(255), fldCode2) 
FROM ... 

Если они ниточки и следующие не работают:

SELECT Method = fldCode1 + ':' + fldCode2 FROM ... 

Затем вам нужно, чтобы лучше определить, что «не работает» означает ...

2

SELECT CONCAT ('fldCode1', ':', 'fldCode2') в качестве метода;

+1

Нет, 'CONCAT' доступен только на SQL Server 2012. –

+0

Работает в MySQL 5.5 – AdRock

0

Начиная с 2008 SQL SERVER 2008 (не забудьте использовать функцию ISNULL, иначе ваш результат будет нулевым), если вы попытаетесь конкатенацию нулевого столбца.

SELECT ISNULL('myFirstString', '') + ' ' + ISNULL('mySecondString', '') 

Вы также можете установить CONCAT_NULL_YIELDS_NULL кремовый таким образом, если вы не хотите использовать функцию ISNULL так что это будет работать.

SET CONCAT_NULL_YIELDS_NULL OFF 
SELECT 'myFirstString' + ' ' + 'mySecondString' 

Начиная с SQL Server 2012 Это так просто, как этот

SELECT CONCAT ('Happy ', 'Birthday ', 11, '/', '25') 
Смежные вопросы