2017-09-04 4 views
0
USE DBname 
UPDATE notestable 
SET NotesColumn= REPLACE(NotesColumn,',','') 
WHERE NotesColumn LIKE '%,%' 

lorsque je tente d'exécuter ce code, je reçois l'erreur ci-dessous.Obtenir une erreur en essayant de supprimer la virgule d'une colonne de texte libre dans SQL

Msg 8116, Level 16, State 1, Line 2 
Argument data type text is invalid for argument 1 of replace function. 

i réussi à faire un code similaire il y a une semaine et enlevé tous les guillemets de cette colonne déjà, mais il y a clairement quelque chose que je suis absent dehors. (Je l'ai changé les noms exprès puisque nous travaillons pour une entité gouvernementale)

J'utilise le code de ce poste mais son ne fonctionne toujours pas: https://social.msdn.microsoft.com/Forums/sqlserver/en-US/12c2e9bf-a5c2-484a-a7b3-021890c61963/how-to-remove-comma-fro-sql-string?forum=transactsql

+0

qu'est-ce que les données ressemblent? – dbajtr

+0

@dbajtr c'est une colonne de notes pour quand une infirmière écrit une courte description de ce qui est arrivé au patient –

+0

Peut être votre domaine peut-être d'un autre type de données plutôt que NVARCHAR? Veuillez vérifier –

Répondre

1

Vous ne pouvez pas exécuter un REPLACE sur un type de données texte. Convertissez-le en [n]varchar(max) en premier.

USE DBname 
UPDATE notestable 
SET NotesColumn= REPLACE(CONVERT(nvarchar(max), NotesColumn),',','') 
WHERE NotesColumn LIKE '%,%' 
+0

Merci beaucoup, 195837 lignes viennent d'être touchées :) –

+0

J'espère que c'est ce que vous attendiez! :) –

+0

J'espère que c'est parce que nous avions un problème pour obtenir des rapports avec notre logiciel de production de rapports au format CSV et c'était à cause de chracaters spéciaux –

1

Essayez ce problème peut-être dépend de text type de données, le convertir en varchar(max)

USE DBname 
UPDATE notestable 
SET NotesColumn= REPLACE(CONVERT(VARCHAR(MAX), fieldName),',','') 
WHERE NotesColumn LIKE '%,%' 
0
USE DBname 
UPDATE notestable 
SET NotesColumn= CAST(REPLACE(CAST(NotesColumn AS nvarchar(MAX)),',','')AS ntext) 
WHERE NotesColumn LIKE '%,%'