Я подготовил SQL-запрос, который мне придется запускать в нескольких базах данных (Oracle и Sybase), где некоторые данные могут храниться по-разному.Сравнение строк SQL -how для игнорирования пробелов
Я заметил, что одним из отличий в хранении данных является пустая строка. Например, в колонке PRODUCT_TYPE
ниже, пожалуйста, посмотрите на второй записи:
Эта «пустая строка» (тип данных CHAR(15)
) обведена красным равно ''
в некоторых базы данных, тогда как для некоторых других он равен ' '
. Длина никогда не является постоянной и существует несколько полей, которые ведут себя как таковые.
Так, так как мне нужно фильтровать эти «пустые строки», я должен изменить следующее заявление в пункте WHERE
:
WHERE PRODUCT_TYPE = ''
... потому что выше будет принимать ' '
строки в другую, чем ''
, даже если «функционально» говорить не является. Я хотел бы сделать заявление таким образом, что он «игнорирует пробелы», то есть ' '
равен ''
, который равен ' '
и т. Д. Как мне сделать это изменение, чтобы заставить его работать?
Я попытался простой заменяющий подход:
WHERE REPLACE(PRODUCT_TYPE,' ','') = ''
... но это не похоже на работу, вероятно, потому, что я должен использовать различный характер. Ради тестирования, внутри '
ниже там скопированный вставили пример того, что я нахожу в этих «пустых строк»:
' '
В идеале, это должно быть «неспецифический SQL» решение, так как я должен будет запускать тот же запрос как для Oracle, так и для Sybase RDBMS. Есть идеи?
Почему он должен быть точно такой же запрос для обеих баз данных? – Thilo
Если 'REPLACE (PRODUCT_TYPE, '', '')' не удаляет все пробелы, тогда у вас есть другой символ, чем пробел, например, возврат каретки или вкладка или какой-либо другой непечатаемый символ. – Atri
@ Тило это только вопрос того, как результаты придут. Если мы запускаем два типа запросов (один для всех баз данных Oracle и один для всех Sybase, мы получим два отдельных файла для анализа). Разве невозможно сделать инструкцию IF Oracle ELSE? Я признаю, что я не очень хорошо разбираюсь в SQL, мне понравилось бы ваше одобрение. –