Update in Access nach MSSQL konvertieren
Gesucht sind Entsprechungen zu einigen Access-Funktionalitäten
Ich möchte folgenden ACCESS-Befehl unter MSSQL lauffähig machen. MSSQL kennt z.B. kein UCase, Right, Left, Len und & vermutlich auch nicht. Wie sehen die entsprechenden Befehle - oder sofern sie nicht vorhanden sind Alternativen - in MSSQL aus?
Update Tabelle Set Name = "I:\NAME" & Right(Name, Len(name)-9) Where Ucase(Left(Name,9)) = "C:\NAME"
Es soll praktisch aus C:\NaMe\Pfad I:\NAME\Pfad gemacht werden.
Ich möchte folgenden ACCESS-Befehl unter MSSQL lauffähig machen. MSSQL kennt z.B. kein UCase, Right, Left, Len und & vermutlich auch nicht. Wie sehen die entsprechenden Befehle - oder sofern sie nicht vorhanden sind Alternativen - in MSSQL aus?
Update Tabelle Set Name = "I:\NAME" & Right(Name, Len(name)-9) Where Ucase(Left(Name,9)) = "C:\NAME"
Es soll praktisch aus C:\NaMe\Pfad I:\NAME\Pfad gemacht werden.
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 51569
Url: https://administrator.de/contentid/51569
Ausgedruckt am: 26.11.2024 um 05:11 Uhr
5 Kommentare
Neuester Kommentar
Nabend,
fast richtig Biber, aber das "&" muß einem "+" weichen. Außerdem ist "Len" mit Vorsicht zu genießen, weil es Leerzeichen am Ende nicht berücksichtigt. Sicherer ist da ein Substring (Name, 10, 8000), wobei die 8000 auch die Maximallänge von "Name" sein kann. Es ist jedenfalls kein Problem, wenn die Zahl größer ist, als die tatsächlich vorhandenen Zeichen. Dementsprechend würde der Befehl dann lauten:
Gruß, Mad Max
fast richtig Biber, aber das "&" muß einem "+" weichen. Außerdem ist "Len" mit Vorsicht zu genießen, weil es Leerzeichen am Ende nicht berücksichtigt. Sicherer ist da ein Substring (Name, 10, 8000), wobei die 8000 auch die Maximallänge von "Name" sein kann. Es ist jedenfalls kein Problem, wenn die Zahl größer ist, als die tatsächlich vorhandenen Zeichen. Dementsprechend würde der Befehl dann lauten:
Update Tabelle
Set Name = 'I:\NAME' + Substring (Name, 8, 8000)
Where Upper (Left (Name, 7)) = 'C:\NAME'
Gruß, Mad Max
Upps, mad Max,
mit dem "+" hast Du natürlich Recht.
Das TRIMmen wollte ich mir schenken, hatte es zwar gesehen, aber...
Aber egal, dann lass es uns weiter verfeinern:
-oder, an meine Variante angelehnt-
oder wir jagen über alle Sätze zwei Statements rüber:
..hart, aber herzlich..
Grüsse
Biber
mit dem "+" hast Du natürlich Recht.
Das TRIMmen wollte ich mir schenken, hatte es zwar gesehen, aber...
Aber egal, dann lass es uns weiter verfeinern:
Update Tabelle
Set Name = 'I:\NAME' + RTrim(Substring (Name, 8, 8000))
Where Upper (Left (Name, 7)) = 'C:\NAME';
Update Tabelle
Set Name = 'I:\NAME' + Right(Rtrim(Name), Len(RTrim(name))-7)
Where Upper(Left(Name,7)) = 'C:\NAME';
Update tabelle Set name = Replace(name, 'C:\', 'I:\');
Update tabelle Set name = Replace(name, 'c:\', 'i:\');
Grüsse
Biber
Moin,
@Biber: man sollte wohl abends keine Beiträge mehr beantworten, wenn man müde ist übersieht man das Triviale
@UNeverNo: Du solltest mit die Datensätze einschränken. Wenn 'C:\pfad' nämlich nicht in der Spalte Detail existiert, versucht er eine Zeichenkette der Länge -1 zu ermitteln, und dann krachts.
Gruß, Mad Max
@Biber: man sollte wohl abends keine Beiträge mehr beantworten, wenn man müde ist übersieht man das Triviale
@UNeverNo: Du solltest mit
Where Charindex ('C:\pfad', Detail) > 0
Gruß, Mad Max