Anmelden

View Full Version : sql abfrage mit substring



juergenkemeter
17-11-04, 10:34
Hallo,

ich versuche momentan folgendes Problem in den Griff zu kriegen:
ich habe folgende Felder:
- PRID (INTEGER), z.B. 1,2,3,...
- PRYEAR (DECIMAL 4,0), z.B. 2003, 2004,...

Jetzt brauche ich eine Abfrage, die mir aus diesen beiden Feldern folgendes Format zusammensetzt:

AE[PRID]/[PRYEAR]
z.B. AE0000003/03, AE0000010/04,usw.

Das Jahr am Schluss soll nur zweistellig angezeigt werden.


Dazu versuchte ich folgende SQL-Abfrage:
-------------------------------------------
select substring('AE0000000',1,9-Length(cast(prid as varchar(7)))) + cast(prid as varchar(7)) + '/' + substring(cast(pryear as char(4)),3,2)
from hilfssto.proverw
where PRID = [PRID]
-------------------------------------------


folgende Fehlermeldung gibt es dann aus:
---------------------------
DB2 Table Editor Developer
---------------------------
+ use not valid.

(SQL code = -402, SQL state = 42819)
---------------------------
OK
---------------------------

Kann mir da wer weiterhelfen?

Jürgen

BenderD
17-11-04, 10:51
Hallo,

SQL kennt + nicht als Verkettung, du musst entweeder !! (Pipe Zeichen, je nach Zeichensatz) oder Concat(feld1, feld2) nehmen

Dieter Bender


Hallo,

ich versuche momentan folgendes Problem in den Griff zu kriegen:
ich habe folgende Felder:
- PRID (INTEGER), z.B. 1,2,3,...
- PRYEAR (DECIMAL 4,0), z.B. 2003, 2004,...

Jetzt brauche ich eine Abfrage, die mir aus diesen beiden Feldern folgendes Format zusammensetzt:

AE[PRID]/[PRYEAR]
z.B. AE0000003/03, AE0000010/04,usw.

Das Jahr am Schluss soll nur zweistellig angezeigt werden.


Dazu versuchte ich folgende SQL-Abfrage:
-------------------------------------------
select substring('AE0000000',1,9-Length(cast(prid as varchar(7)))) + cast(prid as varchar(7)) + '/' + substring(cast(pryear as char(4)),3,2)
from hilfssto.proverw
where PRID = [PRID]
-------------------------------------------


folgende Fehlermeldung gibt es dann aus:
---------------------------
DB2 Table Editor Developer
---------------------------
+ use not valid.

(SQL code = -402, SQL state = 42819)
---------------------------
OK
---------------------------

Kann mir da wer weiterhelfen?

Jürgen

Fuerchau
17-11-04, 11:57
wie wärs mit:

'AE' concat digits(dec(prid, 7, 0)) concat '/' concat substr(digits(pryear), 3, 2)

juergenkemeter
17-11-04, 12:14
select substring('AE' concat digits(dec(prid, 7, 0)) concat '/' concat substr(digits(pryear), 3, 2)
from hilfssto.proverw
where PRID = [PRID]

gibt folgendes aus:
---------------------------
DB2 Table Editor Developer
---------------------------
Keyword WHERE not expected. Valid tokens: , FOR.
(SQL code = -199, SQL state = 42601)
---------------------------
OK
---------------------------


ersetze ich where durch for, kommt folgendes:
---------------------------
DB2 Table Editor Developer
---------------------------
Token = was not valid. Valid tokens: ).
(SQL code = -104, SQL state = 42601)
---------------------------
OK
---------------------------

/jk

Fuerchau
17-11-04, 12:18
select 'AE' concat digits(dec(prid, 7, 0)) concat '/' concat substr(digits(pryear), 3, 2)
from hilfssto.proverw
where PRID = [PRID]

juergenkemeter
17-11-04, 14:32
alles klar, funktioniert. Danke!!

/jk