Как получить номер телефона, начинающийся с нуля, при экспорте данных в Excel, csv, HTML

#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 — это совсем другой формат.