'||' na pewno działa w Oracle, ale nie najwyraźniej SQL Server. (Dla tych, którzy przyjdą po nas, oto kamień z Rosetty dla SQL: SQL Dialects Reference)
Jeśli naprawek skryptów SQL, chciałbym rozważyć następujące rozwiązanie:
Przed:
sql-shell-command < sql-file.sql
(SQL-plik zawiera operatory '+')
PO:
ansi-sql-shell-command < sql-file.sql
sed -e 's/||/\+/' < sql-file.sql | ms-sql-shell-command
(plik sql zawiera operatory "||", musisz przekonwertować pliki)
Pomysł polega na tym, że zaczynasz od SQL w jednym formacie, a w przypadku specjalnym uruchamiasz go, aby przekształć go na inny format. Teoretycznie możesz zamienić wszystkie znaki "+" na "||", ale ponieważ znaczna część z nich może być liczbowa - dodaj zamiast łączenia ciągów, jest mało prawdopodobne, aby działała tak dobrze.
Złożoność filtra zależy od tego, co robisz. Jeśli posiadasz dowolne dane w swoim SQL, musisz je zdobyć, aby uniknąć zastępowania w łańcuchach. Ale jeśli konfigurujesz widoki, prawdopodobnie będzie dobrze.
Można użyć tej samej techniki w programach, w których SQL jest w ciągach - napisać funkcję w programie, aby przekształcić ją z jednej formy w drugą.
dlaczego wszystkie bazy danych muszą mieć tę samą składnię? gdyby były takie same, byłby tylko jeden. języki aplikacji mają różną składnię? –
Wszystkie kompilatory języka C analizują tę samą składnię, dlaczego parsery SQL nie powinny robić tego samego? – ijw
SQL Server i Sybase używają języka TSQL, a Oracle używa języka PL/SQL. TSQL jest inny niż PL/SQL. –