Как связать текст в запросе на сервере sql?

Следующий SQL:

SELECT notes + 'SomeText'
FROM NotesTable a 

Дайте ошибку:

Типы данных nvarchar и текст несовместимы в операторе добавления.

Ответ 1

Единственный способ - преобразовать текстовое поле в поле nvarchar.

Select Cast(notes as nvarchar(4000)) + 'SomeText'
From NotesTable a

В противном случае я предлагаю выполнить конкатенацию в вашем приложении.

Ответ 2

Возможно, вы захотите также рассмотреть значения NULL. В вашем примере, если столбец отмечает имеет нулевое значение, тогда результирующее значение будет NULL. Если вы хотите, чтобы нулевые значения вели себя как пустые строки (чтобы ответ вышел "SomeText" ), используйте функцию IsNull:

Select IsNull(Cast(notes as nvarchar(4000)),'') + 'SomeText' From NotesTable a

Ответ 3

Если вы используете SQL Server 2005 или более поздней версии, в зависимости от размера данных в поле "Примечания", вам может потребоваться кастинг для nvarchar (max) вместо того, чтобы кастинг на определенную длину, что может привести к усечению строки.

Select Cast(notes as nvarchar(max)) + 'SomeText' From NotesTable a

Ответ 4

Вы должны явно использовать типы строк для их конкатенации. В этом случае вы можете решить проблему, просто добавив "N" перед "SomeText" (N'SomeText '). Если это не сработает, попробуйте Cast ('SomeText' как nvarchar (8)).

Ответ 5

Если вы используете SQL Server 2005 (или выше), вам может потребоваться переключиться на NVARCHAR (MAX) в определении вашей таблицы; TEXT, NTEXT и IMAGE SQL Server 2000 будут устаревать в будущих версиях SQL Server. SQL Server 2005 обеспечивает обратную совместимость с типами данных, но вместо этого вы, вероятно, должны использовать VARCHAR (MAX), NVARCHAR (MAX) и VARBINARY (MAX).