Нет способа сделать то, что вы просите, за исключением изменения исходного кода php / oci-extension. Причина такого поведения заключается в том, что oracle oci пропускает 0 в результатах, а php преобразует все результаты из oci в строки без выполнения приведения в зависимости от типа данных столбца. Даже результаты в SQL * Plus по умолчанию опускают 0, а форматирование SQL * Plus должно вызываться с set numformat
для настройки форматирования столбца и добавления перед 0.
В настоящее время нет параметра alter session, который можно установить для изменения этого поведения.
Наиболее распространенный способ обойти это - использовать оболочку вокруг ваших запросов и проверять числовые столбцы с помощью is_numeric
, а затем форматировать числовые значения столбцов с помощью number_format
или sprintf
. Надеемся, что ваше приложение уже использует оболочку для стандартных функций php oci, чтобы вы могли внести изменения в одном месте.