# MS SQL Die Datentypen varchar und text sind im add-Operator inkompatibel



## guenter024 (17. April 2013)

Hallo,

beim Datenexport möchte ich vollständige Inserts erzeugen.
Hierzu bin ich momentan mit meiner Syntax soweit:

```
SELECT
NEWINSERT = 'INSERT INTO meineDB
(         
Artikelnummer,
Zusatznummer,  
Warengruppe,          
Bezeichnung,         
Bezeichnung2, 
Langtext 
) VALUES ('              
+ Artikelnummer + ','      
+ Zusatznummer + ','                                                                         
+ CONVERT(varchar(11),Warengruppe) + ','
+ Bezeichnung + ','   
+ Bezeichnung2 + ','                                                 
+ Langtext                            
+ ');'                  
                             
FROM                                    
    Artikel                                        
WHERE
Art = '0'
ORDER BY                    
      Artikelnummer ASC
```

Habe jetzt bei Langtext abbrechen müssen, da hier die im Betreff genannte Fehlermeldung kommt.
Habe versucht mit CAST (Langtext AS varchar) den Datentyp zu ändern, doch hier kommen in der Spalte Langtext komische Zeichen:

```
{\rtf1\ansi\ansicpg1252\deff0{);
```

Beim normalen Auswerten mittels SELECT * FROM Artikel wird der Langtext einwandfrei ausgewertet.
Hat jemand einen Tipp für mich, wie ich den Langtext auch im add-Operator auswerten kann?

Dank Euch im Voraus!


----------



## Bernd1984 (22. April 2013)

Hallo Günter,

versuch mal die Textfelder (ich vermute es sind diese: Artikelnummer,Zusatznummer, Bezeichnung, Bezeichnung2 und Langtext) in Hochkomma zu setzten

```
SELECT
NEWINSERT = 'INSERT INTO meineDB
(         
Artikelnummer,
Zusatznummer,  
Warengruppe,          
Bezeichnung,         
Bezeichnung2, 
Langtext 
) VALUES ('''              
+ Artikelnummer + ''','''      
+ Zusatznummer + ''','                                                                         
+ CONVERT(varchar(11),Warengruppe) + ','''
+ Bezeichnung + ''','''   
+ Bezeichnung2 + ''','''                                                 
+ Langtext                            
+ ''');'                  
                             
FROM                                    
    Artikel                                        
WHERE
Art = '0'
ORDER BY                    
      Artikelnummer ASC
```


----------



## guenter024 (23. April 2013)

Hallo Bernd,

habe es mit den 3 Hochkommavarianten probiert. 
Mit 'Langtext' wird mir mir nicht der Inhalt des DB-Eintrags ausgegeben, sondern der Text, der jeweils innerhalb der Hochkommas steht, also Langtext.
Mit ´Langtext´ oder `Langtext` kommt die Fehlermeldung falsche Syntax.
Mit "Langtext" kommt wieder die Fehlermeldung [Die Datentypen varchar und text sind im add-Operator inkompatibel].

rtf bedeutet ja, dass der Eintrag in meiner Tabellenspalte Langtext im Rich Text Format vorliegt.
Hast du noch eine andere Idee (oder jemand anders), wie ich das in meiner SELECT-Abfrage korrekt auswerten kann?


----------



## Bernd1984 (24. April 2013)

Hallo Günter,

die  3 Hochkomma bei den Textfelden bewirken, dass deren Inhalt dann in der INSERT-Anweisung in einem Hochkomma stehen.

```
Insert into meineDB (Artikelnummer, Zusatznummer, Warengruppe, Bezeichnung, Bezeichnung2, Langtext) 
Values ('M03','B10',50,'Ware','Ware2','Langtext')
```

Wenn die Daten Steuerzeichen oder mal ein Komma enthalten, gibt es dann Fehler, wenn die Texte nicht in Hochkomma stehen.


----------



## BaseBallBatBoy (25. April 2013)

MS SQL? Ist evtl. das hier etwas für dich?

Microsoft should advertise this functionality of SSMS 2008. The feature you are looking for is built into the Generate Script utility, but the functionality is turned off by default and must be enabled when scripting a table.

This is a quick run through to generate Insert statements for all of the data in your table, using no scripts or add-ins to SQL Management Studio 2008:

-    Right click on the database and go to Tasks -> Generate Scripts
-    Select the tables (or object) that you want to generate the script against.
-    Go to Set scripting options and click on the Advanced button.
-    In the General category, go to Type of data to script
-    There are 3 options: Schema Only, Data Only, and Schema and Data. Select the appropriate option and click on OK.

You will then get the CREATE TABLE statement and all of the INSERT statements for the data straight out of SSMS.

http://stackoverflow.com/questions/...rate-insert-statements-for-a-sql-server-table


----------

