Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

INSERT-Problem mit langer Zeichenfolge

547 views
Skip to first unread message

Thomas Schremser

unread,
Feb 11, 2008, 3:59:32 AM2/11/08
to
Hallo allerseits!

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

Christoph Ingenhaag

unread,
Feb 11, 2008, 4:22:02 AM2/11/08
to

"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

Thomas Schremser

unread,
Feb 11, 2008, 4:35:13 AM2/11/08
to
Hallo Christoph!

Christoph Ingenhaag <Christoph...@discussions.microsoft.com> schrieb:

> nvarchar ist unicode und braucht pro Zeichen 2 Bytes...

Danke, das wars.

0 new messages