#oracle #oracle-sqldeveloper
#Oracle #oracle-sqldeveloper
Вопрос:
я использую приведенный ниже запрос
select ''||'001234567890'||'' from dual;
это будет работать для .xslx и HTML, но csv не работает
есть ли другой способ показать, где для всех трех форматов он будет отображаться правильно.
Комментарии:
1. Что вы подразумеваете под «не работает»? И как вы «используете» этот запрос? Как экспортировать результат в csv? Почти наверняка вы допускаете ошибку при экспорте в csv; это не имеет ничего общего с используемым вами запросом. Кроме того, откуда вы вообще знаете, что экспортированные данные неверны? Как вы это просматриваете? Вы открываете его как обычный текст или просто открываете его в Excel, и если Excel не показывает начальные нули, вы предполагаете, что их нет в файле csv?
2. Пожалуйста, опишите, как этот запрос связан с csv / xlsx / html. Когда данные извлекаются из базы данных, вопрос не имеет ничего общего с базой данных. Когда данные находятся внутри базы данных, они не имеют ничего общего с csv / html / xml. Вопрос не ясен.
3. @astentx если я пытаюсь экспортировать данные моей таблицы непосредственно из базы данных в формат csv, суммы, подобные 890,00, отображаются только как 890, а номер Phn, который начинается с нулей, обрезается после прямого экспорта в csv, здесь нет кода пользователя, непосредственно я экспортирую
4. @shah Потому что Excel обрабатывает числа как числа, когда он открывает csv напрямую. Вы можете использовать «Импорт данных -> Из текста» и указать формат для каждого столбца или прочитать CSV с помощью Power Query и удалить этап преобразования типа данных.
Ответ №1:
В Oracle пустая строка ''
совпадает с NULL
вашим запросом:
select ''||'001234567890'||'' from dual;
То же самое, что:
select NULL||'001234567890'||NULL from dual;
Что совпадает с:
select '001234567890' from dual;
Согласно этому ответу, для файла csv, который вы импортируете в Excel, вам нужен формат "=""001234567890"""
, который будет выдавать запрос:
select '"=""001234567890"""' from dual;
или, если вы объединяете строки:
select '"=""' || '001234567890' || '"""' from dual;
Не будет единого метода, который работал бы для всех 3 форматов, поскольку, хотя HTML и формат Excel .xlsx являются производными от XML (да, HTML — это не XML), и вы, вероятно, можете найти что-то, что работает для обоих из них, CSV — это совсем другой формат.