Другим обходным решением может быть добавление дополнительного пространства после «!» :
# echo "#! "
#!
@hamishcmcn
Ваше утверждение, что '' == Пустой указатель просто не верен. В реляционном мировом Пустом указателе должен только когда-либо читаться, чтобы означать, что "Я не знаю". Единственным результатом, который Вы получите от Oracle (и большинство других достойных баз данных) при сравнении значения с Пустым указателем является 'Ложь'.
Первое, что пришло на ум существенные различия между SQL Server и Oracle:
Все остальные, выручите меня и добавьте больше.
Основное различие, которое я заметил в перемещении от SQL Server до Oracle, было то, что в Oracle необходимо использовать курсоры в операторах SELECT. Кроме того, временные таблицы используются по-другому. В SQL Server можно создать один в процедуре и затем ОТБРОСИТЬ его в конце, но в Oracle Вы, как предполагается, уже создаете временную таблицу, прежде чем процедура будет выполнена.
я посмотрел бы на типы данных также, так как они очень отличаются.
Конкатенация строк:
Oracle: || или concat ()
SQL-сервер: +
Эти ссылки могли быть интересными:
http://www.dba-oracle.com/oracle_news/2005_12_16_sql_syntax_differences.htm
http://www.mssqlcity.com/Articles/Compare/sql_server_vs_oracle.htm (старый: Ora9 по сравнению с Sql 2000)
@hamishmcn
Обычно это - плохая идея.. Временные таблицы в оракуле должны просто быть составлены и оставлены (если это не однажды прочь/очень редко используется). Содержание временной таблицы является локальным для каждой сессии и усеченным, когда сеанс закрыт. Существует мало точки в оплачивании стоимости создания/отбрасывания временной таблицы, мог бы даже привести к столкновениям, если два процесса пытаются составить таблицу одновременно и неожиданные фиксации от работающего DDL.
Что Вы спросили, вот огромная тема, тем более, что Вы действительно не сказали, для чего Вы используете базу данных (например, будут Вами идущий от TSQL-> МН / SQL или просто изменяющий базу данных бэкенда, с которой подключено Ваше JAVA-приложение?)
, Если Вы серьезно относитесь к использованию Вашего выбора базы данных к его potiential, тогда я предлагаю, чтобы Вы вырыли немного глубже и считали что-то как Эксперт Архитектура Базы данных Oracle: 9i и 10-граммовые Методы программирования и Решения Tom Kyte.
Не упустите различие в способе, которым рассматривают пустую строку.
INSERT INTO atable (a_varchar_column) VALUES ('');
совпадает с
INSERT INTO atable (a_varchar_column) VALUES (NULL);
, у меня нет никакого sqlserver
опыт, но я понимаю, что он дифференцируется между два
Если Вам нужно Вам, может создать и отбросить временные таблицы в процедурах с помощью команда Execute Immediate .
к andy47 я не подразумевал, что можно использовать пустую строку в сравнении, но оракул рассматривает его как пустой указатель, если Вы используете его во вставке. Перечитайте мою запись, затем попробуйте следующий SQL:
CREATE TABLE atable (acol VARCHAR(10));
INsERT INTO atable VALUES( '' );
SELECT * FROM atable WHERE acol IS NULL;
И избегать "да это, нет это не" ситуация, вот внешняя ссылка