El siguiente SQL:
SELECT notes + 'SomeText'
FROM NotesTable a
Dar el error:
Los tipos de datos nvarchar y text son incompatibles en el operador add.
Respuestas:
La única forma sería convertir su campo de texto en un campo nvarchar.
Select Cast(notes as nvarchar(4000)) + 'SomeText'
From NotesTable a
De lo contrario, sugiero hacer la concatenación en su aplicación.
Es posible que también desee considerar valores NULL. En su ejemplo, si las notas de la columna tienen un valor nulo, el valor resultante será NULL. Si desea que los valores nulos se comporten como cadenas vacías (para que la respuesta sea 'SomeText'), utilice la función IsNull:
Select IsNull(Cast(notes as nvarchar(4000)),'') + 'SomeText' From NotesTable a
Si está utilizando SQL Server 2005 o superior, según el tamaño de los datos en el campo Notas, es posible que desee considerar la conversión a nvarchar (max) en lugar de la conversión a una longitud específica que podría resultar en el truncamiento de la cadena.
Select Cast(notes as nvarchar(max)) + 'SomeText' From NotesTable a
Otra opción es el comando CONCAT :
SELECT CONCAT(MyTable.TextColumn, 'Text') FROM MyTable
Si está utilizando SQL Server 2005 (o superior), es posible que desee considerar cambiar a NVARCHAR (MAX) en la definición de su tabla; Los tipos de datos TEXT, NTEXT e IMAGE de SQL Server 2000 quedarán obsoletos en futuras versiones de SQL Server. SQL Server 2005 proporciona compatibilidad con versiones anteriores de los tipos de datos, pero probablemente debería utilizar VARCHAR (MAX), NVARCHAR (MAX) y VARBINARY (MAX) en su lugar.
text
4000 "enorme"nvarchar
para asegurarte de que casi cualquier cosa quepa?