Einen String in zwei Strings splitten per SQL
Hallo,
ich habe folgenden String in meiner Tabelle "accountingEntryExport_13344_UTC090040_23.csv.gz" nun möchte ich per SQL-Befehl den in zwei Teilen Splitten, den Zwischenteil rauslöschen und wieder zusammenfügen, damit mein String so ausschaut : "accountingEntryExport_23.csv.gz"
kann mir bitte jemand von euch helfen, mit welchem Befehl ich das Schaffe ???
ich habe folgenden String in meiner Tabelle "accountingEntryExport_13344_UTC090040_23.csv.gz" nun möchte ich per SQL-Befehl den in zwei Teilen Splitten, den Zwischenteil rauslöschen und wieder zusammenfügen, damit mein String so ausschaut : "accountingEntryExport_23.csv.gz"
kann mir bitte jemand von euch helfen, mit welchem Befehl ich das Schaffe ???
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 226626
Url: https://administrator.de/contentid/226626
Ausgedruckt am: 17.11.2024 um 20:11 Uhr
8 Kommentare
Neuester Kommentar
Hallo
was für ein sqlserver hast du im einsatz ( oracle, mysql, mssql) ?
möchstest du den string einfach anzeigen oder in der tabelle umschreiben?
zum anzeigen bei mssql einfach : select SUBSTRING(name, 16,12) from tbl
was für ein sqlserver hast du im einsatz ( oracle, mysql, mssql) ?
möchstest du den string einfach anzeigen oder in der tabelle umschreiben?
zum anzeigen bei mssql einfach : select SUBSTRING(name, 16,12) from tbl
Hallo essu2307, Willkommen im Forum!
in Access kannst du es auch via VBA machen. Das Script durchläuft alle Zeilen der Tabelle und ändert den Inhalt der Spalte entsprechend.:
(In Zeile 2 noch den Namen der Tabelle und in Zeile 3 den Namen der Spalte in dieser Tabelle eintragen)
oder wenn die Anzahl an Unterstrichen dazwischen unterschiedlich sein kann nimmst du diese Variante
Grüße Uwe
in Access kannst du es auch via VBA machen. Das Script durchläuft alle Zeilen der Tabelle und ändert den Inhalt der Spalte entsprechend.:
(In Zeile 2 noch den Namen der Tabelle und in Zeile 3 den Namen der Spalte in dieser Tabelle eintragen)
Sub ModifyColumn()
tblName = "Accounting"
colName = "DeinSpalte"
Dim rs As Recordset
Set rs = CurrentDb.OpenRecordset(tblName)
rs.MoveFirst
While Not rs.EOF
If Trim(rs.Fields(colName).Value) <> "" Then
arrParts = Split(rs.Fields(colName).Value, "_", -1, vbTextCompare)
rs.Edit
rs.Fields(colName).Value = arrParts(0) & "_" & arrParts(3)
rs.Update
End If
rs.MoveNext
Wend
End Sub
Sub ModifyColumn()
tblName = "Accounting"
colName = "DeinSpalte"
Dim rs As Recordset
Set rs = CurrentDb.OpenRecordset(tblName)
Set regex = CreateObject("vbscript.regexp")
regex.Pattern = "^([^_]+_).*_([^_]+)$"
rs.MoveFirst
While Not rs.EOF
If rs.Fields(colName).Value <> "" Then
strInhalt = rs.Fields(colName).Value
Set matches = regex.Execute(strInhalt)
rs.Edit
rs.Fields(colName).Value = matches(0).submatches(0) & matches(0).submatches(1)
rs.Update
End If
rs.MoveNext
Wend
End Sub
Hi essu2307,
probier mal das hier aus:
Im Grunde genommen musst nur noch den richten Feldnamen einfügen.
LG Chmumann
probier mal das hier aus:
SELECT
'accountingEntryExport_13344_UTC090040_23.csv.gz' AS 'Org',
LEFT('accountingEntryExport_13344_UTC090040_23.csv.gz', CHARINDEX('_', 'accountingEntryExport_13344_UTC090040_23.csv.gz', 1)) AS 'Left',
RIGHT('accountingEntryExport_13344_UTC090040_23.csv.gz', LEN('accountingEntryExport_13344_UTC090040_23.csv.gz') - PATINDEX('%_[0-9][0-9].csv.gz','accountingEntryExport_13344_UTC090040_23.csv.gz')) AS 'Right'
Im Grunde genommen musst nur noch den richten Feldnamen einfügen.
SELECT
[DeinFeldname] AS 'Org',
LEFT([DeinFeldname], CHARINDEX('_', [DeinFeldname], 1)) AS 'Left',
RIGHT([DeinFeldname], LEN([DeinFeldname]) - PATINDEX('%_[0-9][0-9].csv.gz',[DeinFeldname])) AS 'Right',
LEFT([DeinFeldname], CHARINDEX('_', [DeinFeldname], 1)) +
RIGHT([DeinFeldname], LEN([DeinFeldname]) - PATINDEX('%_[0-9][0-9].csv.gz',[DeinFeldname])) AS 'Combi'
LG Chmumann