-
SQL CONCAT
Hallo,
ich habe eine Kalenderdatei wo ich die Felder(alle 2, 0 Dezimal):
- Jahrhundert,
- Jahr,
- MONAT und
- TAG
in einem Sqlstatement zu einem 8, 0 Feld zusammenführen möchte.
Leider unterdrückt mir das Sqlstatement die Führenden Nullen.
Code:
SELECT KJH concat KJJ concat KMM concat KTT FROM PKALEND
Wie müsste das Sql-Statement aussehen?
Dank im Voraus
-
Digits(xx) liefert auch die Vornullen.
-
Code:
SELECT CAST (DIGITS(KJH)
CONCAT DIGITS(KJJ)
CONCAT DIGITS(KMM)
CONCAT DIGITS(KTT)
AS DECIMAL( 8, 0 )) AS DATUMAB
FROM PKALEND
WHERE DATUMAB >= 20140101
Danke für den Tip mit dem Digits.
Ich habe mir den Ausdruck als Datumab definiert.
Wieso akzeptiert er mir in der WhereClausel das Datumab nicht?
-
Weil du nicht auf das Ergebnis vergleichen kannst, in deinem Fall ist der Ausdruck zu wiederholen.
Alternativ kannst du auch eine CTE verwenden, dann ist der neue Name des Ausdrucks auch bekannt.
Bedenke, dass solche Abfragen grundsätzlich einen Tablescan durchführen und nicht performant sind!
Ich empfehle dir eine Hilfsdatei mit den Einzelfeldern sowie dem Gesamtfeld und Indizes.
Dann kannst du per Inner Join ohne rechnen schneller abfragen.
-
Ausdrücke umbenannte Namen, neue Namen dürfen können im gleichen Sub-Select nicht verwendet werden.
Ein Sub-Select besteht bez. kann bestehen aus:
SELECT ....
FROM
WHERE
GROUP
HAVING
Mehere Sub-Selects können über UNION, EXCEPT oder INTERSECT zusammengemischt werden.
ORDER BY geht über alle verbundenen Sub-Selects, d.h. sortiert das Ergebnis und ist deshalb außerhalb des Sub-Selects.
In einem Order By können damit auch die neuen Name oder Umbenennungen verwendet werden.
-
verwende halt einfach WITH wenn es dir nur darum geht die Abfrage ausführen zu können
with name as (
SELECT CAST (DIGITS(KJH)
CONCAT DIGITS(KJJ)
CONCAT DIGITS(KMM)
CONCAT DIGITS(KTT)
AS DECIMAL( 8, 0 )) AS DATUMAB
FROM PKALEND )
select * from name
WHERE DATUMAB >= 20140101
-
Wie gesagt, bei kleinen Dateien kann man so was machen, es funktioniert ja schließlich.
Bei mehr als 100.000 Sätzen geht dann die Performanceschreierei wieder los.
-
man muss nur schauen das der dieter nicht im haus ist . ansonsten rauchts
-
Zitat von woodstock99
man muss nur schauen das der dieter nicht im haus ist . ansonsten rauchts
... wenn etliche Tabellen mit mehreren 100 Millionen records in einer table und Millionen von komplexen Transaktionen Bundesliga sind, dann sind ein paar 100.000 Sätze Kreisklasse. In dem Sinne trauere ich schon der Praktiker Pleite ein wenig hinterher, die hatten nämlich eine der größten AS400 Installationen, die ich kenne.
D*B
-
Aber auch in der Kreisklasse wird schon nach Performance gerufen.
-
... dass Du Bundesliga tauglich bist, haben wir ja schon ausprobiert, beim Fußball soll es allerdings Leute geben, die das Runde nicht vom Eckigen unterscheiden können, aber genau wissen wie man gegen Ghana gewonnen hätte.
-
Ich hatte mir für solche Fälle eine Funktion gebaut, die alles umformatiert. Die könnte man an seine Bedürfnisse anpassen:
CREATE FUNCTION TOOLS.REFORMAT(PREIS DECIMAL(7, 2))
RETURNS VARCHAR (16)
DISALLOW PARALLEL LL:
BEGIN
DECLARE Z1 VARCHAR (16);
IF SUBSTR(CAST(PREIS AS VARCHAR (16)), 1,1) = '.' THEN SET Z1 = CONCAT ('0', CAST (CAST (PREIS AS DECIMAL(7,2)) AS VARCHAR(16)));
ELSE SET Z1 = CAST(PREIS AS VARCHAR(16));
END IF;
SET Z1 = TRIM(REPLACE(Z1, '.', ','));
RETURN (Z1);
END LL;
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- You may not post attachments
- You may not edit your posts
-
Foren-Regeln
|
Erweiterte Foren Suche
Google Foren Suche
Forum & Artikel Update eMail
AS/400 / IBM i
Server Expert Gruppen
Unternehmens IT
|
Kategorien online Artikel
- Big Data, Analytics, BI, MIS
- Cloud, Social Media, Devices
- DMS, Archivierung, Druck
- ERP + Add-ons, Business Software
- Hochverfügbarkeit
- Human Resources, Personal
- IBM Announcements
- IT-Karikaturen
- Leitartikel
- Load`n`go
- Messen, Veranstaltungen
- NEWSolutions Dossiers
- Programmierung
- Security
- Software Development + Change Mgmt.
- Solutions & Provider
- Speicher – Storage
- Strategische Berichte
- Systemmanagement
- Tools, Hot-Tips
Auf dem Laufenden bleiben
|
Bookmarks