'||' Ciertamente funciona en Oracle, aunque aparentemente no es SQL Server. (Para los que vienen después de nosotros, esto es una piedra de Rosetta para SQL: SQL Dialects Reference)
Si está arreglando scripts SQL, consideraría la siguiente solución:
ANTES:
sql-shell-command < sql-file.sql
(SQL-archivo contiene '+' operadores)
DESPUÉS:
ansi-sql-shell-command < sql-file.sql
sed -e 's/||/\+/' < sql-file.sql | ms-sql-shell-command
(el archivo sql contiene operadores '||', tendría que convertir sus archivos)
La idea es que empiece con SQL en un formato, y para el caso especial, ejecute un filtro sobre él para transformarlo al otro formato. Teóricamente, podría convertir todos los '+' es en '||' s, pero dado que una buena proporción de ellos podría ser de suma numérica en lugar de concatenación de cadena, es poco probable que funcione también.
La complejidad de su filtro depende de lo que esté haciendo. Si tiene datos arbitrarios en su SQL, deberá obtenerlos para evitar sustituirlos por cadenas. Pero si está configurando vistas, probablemente esté bien.
Puede usar la misma técnica en programas donde el SQL está en cadenas: escriba una función en el programa para convertirla de una forma a otra.
¿por qué toda la base de datos debe tener la misma sintaxis? si todos fueran iguales, solo habría uno. todos los lenguajes de aplicación tienen diferente sintaxis? –
Todos los compiladores C analizan la misma sintaxis, ¿por qué los analizadores SQL no deberían hacer lo mismo? – ijw
SQL Server y Sybase usan el lenguaje TSQL y Oracle usa el lenguaje PL/SQL. TSQL es diferente de PL/SQL. –