Можно попробовать Okular, который может распечатать все страницы в PDF, любят, Проявляют.
||
- это стандартный оператор конкатенации SQL (см. SQL 2008: 5.2). Используйте это и жалуйтесь, если это не работает в используемой вами системе; -)
Если серьезно, вы должны заставить другие системы использовать ||
, а не +
. Это не только более стандартно, но и проще случайно вызвать путаницу, если вы используете +
, особенно если нужно вывести какие-либо типы или если происходит неявное приведение типов.
Учтите: '5 '+ 2
Если используемая вами система не выдает ошибку в этой системе, а +
означает как плюс, так и конкатенацию, вы можете получить некоторые запутанные результаты.
'||' конечно работает в Oracle, хотя явно не в SQL Server. (Для тех, кто придет после нас, вот розеттский камень для SQL: Справочник по диалектам SQL )
Если вы исправляете сценарии SQL, я бы рассмотрел следующее решение:
ДО:
sql-shell-command < sql-file.sql
(sql-файл содержит операторы '+')
ПОСЛЕ:
ansi-sql-shell-command < sql-file.sql
sed -e 's/||/\+/' < sql-file.sql | ms-sql-shell-command
(sql-файл содержит операторы '||', вам придется преобразовать ваши файлы)
Идея состоит в том, что вы начинаете с SQL в одном формате, а в особом случае вы запускаете фильтр, чтобы преобразовать его в другой формат. Теоретически вы можете превратить все '+' в '||', но поскольку значительная часть из них может быть числовым сложением, а не конкатенацией строк, это вряд ли сработает.
Сложность вашего фильтра зависит от того, что вы делаете. Если у вас есть произвольные данные в вашем SQL, вам нужно будет получить их, чтобы избежать подстановки в строках. Но если вы настраиваете представления, это, вероятно, будет хорошо.
Вы можете использовать ту же технику в программах, где SQL находится в строках - написать функцию в программе, чтобы переключать ее из одной формы в другую.
1148264]
Вы не можете перегружать операторы в Oracle. перегрузка «+» все равно не сработает, поскольку Oracle выполняет автоматическое преобразование типов ('1' + '1' = 2).
Oracle использует оператор конкатенации ||
, то есть также ANSI-совместимая.
Существует также функция CONCAT
, которая (начиная с postgres 9.0 и SQL Server 2012) поддерживается всеми тремя СУБД, для которых она вам нужна.
Обратите внимание, что версия Oracle of CONCAT
не является вариативным, как два других. Если вам нужно объединить три или более строк, вам нужно будет вложить:
CONCAT(s1,CONCAT(s2,s3))