Wenn Sie SQL Server verwenden, und wenn es immer fünf Räume sind, können Sie replace()
, wie in diesem Beispiel verwenden:
declare @s varchar(100) = 'AWERDC 123'
select replace(@s, ' ', '#')
Welche zurück:
AWERDC#123
Wenn es eine Variable sind Anzahl der Leerzeichen, dann können Sie das mit stuff()
, charindex()
und patindex()
umgehen. Dieses Beispiel hängt von den Zeichen vor der variablen Anzahl der Leerzeichen ab, die Buchstaben sein sollen, und den Zeichen nach den Leerzeichen als Zahlen. Wenn Ihre Daten anders sind, müssen Sie die patindex()
entsprechend ändern.
declare @s varchar(100) = 'AWERDC 123'
select stuff(@s, charindex(' ', @s, 1), patindex('%[0-9]%', @s) - charindex(' ', @s, 1), '#')
die immer AWERDC#123
zurückgibt, unabhängig davon, wie viele Räume gibt.
Hier ist ein verbesserter Ansatz, der egal ist, welche Art von Zeichen in den führenden und nachfolgenden Zeichen sind. Es funktioniert einfach mit einer variablen Anzahl von Leerzeichen, weil es nach dem ersten Leerzeichen vorwärts sucht, dann das erste Leerzeichen rückwärts (in der Zeichenfolge), führt die Mathematik, dann fügt ein #
anstelle aller Leerzeichen stuff()
:
declare @s varchar(100) = 'AWERDC 123'
select stuff(@s, charindex(' ', @s, 1), len(@s) - charindex(' ', reverse(@s), 1) - charindex(' ', @s, 1) + 2, '#')
Ist es immer genau 5 Leerzeichen, oder sind es bis zu 5 Leerzeichen? Welches DBMS benutzt du? –
Die Antwort ist DBMS-abhängig, zum Beispiel in TSQL können Sie 'replace' verwenden – jean