'||' funktioniert sicherlich in Oracle, obwohl nicht offensichtlich SQL Server. (Für diejenigen, die nach uns kommen, ist hier eine rosetta für SQL: SQL Dialects Reference)
Wenn Sie SQL-Skripte sind Befestigungs, würde ich die folgende Lösung in Betracht:
VOR:
sql-shell-command < sql-file.sql
(sQL-Datei enthält '+' Operatoren)
NACH:
ansi-sql-shell-command < sql-file.sql
sed -e 's/||/\+/' < sql-file.sql | ms-sql-shell-command
(sql-Datei enthält '||' Operatoren, Sie müssten Ihre Dateien konvertieren)
Die Idee ist, dass Sie mit SQL in einem Format beginnen und für den speziellen Fall einen Filter darüber ausführen wandle es in das andere Format um. Theoretisch könnten Sie alle '+' es in '||' s umwandeln, aber da ein guter Teil davon eher eine numerische Addition als eine Kettenverkettung sein kann, wird das wahrscheinlich nicht so gut funktionieren.
Die Komplexität Ihres Filters hängt davon ab, was Sie tun. Wenn Sie in Ihrem SQL-Programm beliebige Daten haben, müssen Sie es erhalten, um zu vermeiden, dass Strings ersetzt werden. Aber wenn Sie Ansichten einrichten, wird es wahrscheinlich gut gehen.
Sie könnten die gleiche Technik in Programmen verwenden, wo die SQL in Strings ist - schreiben Sie eine Funktion in das Programm, um es von einem Formular zum anderen zu machen.
Warum muss die Datenbank die gleiche Syntax haben? Wenn sie alle gleich wären, würde es nur einen geben. Anwendungssprachen haben alle unterschiedliche Syntax? –
Alle C-Compiler analysieren die gleiche Syntax, warum sollten nicht SQL-Parser dasselbe tun? – ijw
SQL Server und Sybase verwenden die TSQL-Sprache und Oracle verwendet die PL/SQL-Sprache. TSQL unterscheidet sich von PL/SQL. –