web-dev-qa-db-fra.com

SQL Server - Ajout d'une chaîne à une colonne de texte (équivalent concat)

Comment ajoutez-vous une chaîne à une colonne dans SQL Server?

UPDATE [myTable] SET [myText]=' '+[myText]

Ça ne marche pas:

Les types de données varchar et text sont incompatibles dans l'opérateur d'ajout.

Vous utiliseriez concat sur MySQL, mais comment le faire sur SQL Server?

31
Aximili

comme indiqué précédemment, le mieux serait de définir le type de données de la colonne sur nvarchar (max), mais si cela n'est pas possible, vous pouvez procéder comme suit à l'aide de la conversion ou de la conversion:

-- create a test table 
create table test (
    a text
) 
-- insert test value
insert into test (a) values ('this is a text')
-- the following does not work !!!
update test set a = a + ' and a new text added'
-- but this way it works: 
update test set a = cast ( a as nvarchar(max))  + cast (' and a new text added' as nvarchar(max) )
-- test result
select * from test
-- column a contains:
this is a text and a new text added

j'espère que cela pourra aider

60
Tobias Pirzer

Arrêtez d'utiliser le type de données TEXT dans SQL Server! 

Il est obsolète depuis la version 2005. Utilisez VARCHAR(MAX) à la place, si vous avez besoin de plus de 8 000 caractères.

Le type de données TEXT ne prend pas en charge les fonctions de chaîne normales, contrairement à VARCHAR(MAX). Votre instruction fonctionnerait parfaitement si vous utilisiez uniquement les types VARCHAR.

16
marc_s

Le + (Concaténation de chaînes) ne fonctionne pas sur SQL Server pour les types de données image, ntext ou text.

En fait, image, ntext et text sont tous obsolètes .

les types de données ntext, text et image seront être supprimé dans une future version de MicrosoftSQL Server. Évitez d’utiliser ces types de données dans les nouveaux travaux de développement, et envisagez de modifier les applications qui les utilise actuellement. Utilisez nvarchar (max), varchar (max) et varbinary (max) au lieu.

Cela dit, si vous utilisez une version de SQL Server plus ancienne que celle que vous souhaitez utiliser UPDATETEXT pour effectuer votre concaténation. Colin Stasiuk en donne un bon exemple dans son article de blog Concaténation de chaînes sur une colonne de texte (SQL 2000 vs SQL 2005+) .

9
ahsteele
UPDATE test SET a = CONCAT(a, "more text")
5
koesys

hmm, essayez de faire CAST(' ' AS TEXT) + [myText]

Bien que, je ne suis pas tout à fait sûr de savoir comment cela va se dérouler.

Je suggère également de ne pas utiliser le type de données Text, utilisez plutôt varchar. 

Si cela ne fonctionne pas, essayez ' ' + CAST ([myText] AS VARCHAR(255))

3
Meiscooldude

Pour joindre deux chaînes dans une requête SQL, utilisez la fonction CONCAT (Express1, Express2, ...)

Comme....

SELECT CODE, CONCAT(Rtrim(FName), " " , TRrim(LName)) as Title FROM MyTable