Ich habe 2 Tabellen auf einem SQL Server 2005, die so aussehen:
CREATE TABLE st2per
(
nr int,
famname char(40),
vorname char(40),
geschl char(1)
)
CREATE TABLE st2pak
(
nr int,
titel char(60),
grd_titel char(8)
)
Die Daten aus diesen Tabellen sollen nun in eine weitere Tabelle eingefügt
werden. Diese ist so definiert:
CREATE TABLE stf.PersonHistory
(
PersonID int,
BriefAnrede nvarchar(160),
AdressAnrede nvarchar(80)
)
Den Import der Daten möchte ich mit folgendem Statemen ausführen:
INSERT INTO stf.PersonHistory
(
PersonID,
BriefAnrede,
AdressAnrede
)
SELECT P.nr AS PersonID,
SUBSTRING
(
'Sehr geehrte' +
CASE
WHEN P.geschl = 'M'
THEN 'r Herr '
ELSE ' Frau '
END +
LTRIM(A.titel + ' ' + A.grd_titel) + ' ' +
P.vorname + ' ' +
P.famname,
1,
160
) AS BriefAnrede,
SUBSTRING
(
CASE
WHEN P.geschl = 'M'
THEN 'Herrn '
ELSE 'Frau '
END +
CHAR(13) + CHAR(10) +
LTRIM(A.titel + ' ' + A.grd_titel) + ' ' +
P.vorname + ' ' +
P.famname,
1,
80
) AS AdressAnrede
FROM st2per P
INNER JOIN st2pak A ON A.nr = P.nr
Das schlägt aber mit der Meldung
"Meldung 8152, Ebene 16, Status 13, Zeile 55
Zeichenfolgen- oder Binärdaten würden abgeschnitten."
fehl. Ich habe die Resultierenden Strings geprüft, die Briefanrede ist
maximal 74 Zeichen lang, die Adressanrede 63. Damit müßten eigentlich alle
Daten auch ohne SUBSTRING importiert werden können und mit SUBSTRING sollte
es IMHO doch ohnehin kein Problem geben.
Was läuft hier falsch?
TIA
Grüße
Thomas
--
Any problem in computer science can be solved with another layer
of indirection. But that usually will create another problem.
David Wheeler
"Thomas Schremser" wrote:
Hi Thomas,
schau dir mal die Datentypen an:
CREATE TABLE stf.PersonHistory
(
PersonID int,
BriefAnrede nvarchar(160),
AdressAnrede nvarchar(80)
)
nvarchar ist unicode und braucht pro Zeichen 2 Bytes...
Vg
Christoph
Christoph Ingenhaag <Christoph...@discussions.microsoft.com> schrieb:
> nvarchar ist unicode und braucht pro Zeichen 2 Bytes...
Danke, das wars.