Поле даты Oracle сохранено как VARCHAR2 со странными символами - PullRequest
0 голосов
/ 24 августа 2011

Интерпретируют ли типы Oracle VARCHAR2 какие-либо escape-последовательности? Я работаю с системой, в которой есть пользовательский интерфейс, содержащий поле даты рождения, но БД сохраняет его как VARCHAR2. Мы видим странный текст в этом поле на стороне базы данных; такие буквы, как «FF», «B», «EG», которые кажутся необъяснимыми. Поле даты может принимать значения даты, такие как 8 августа 2011 года, или строки чисел, такие как 121234. Они преобразуются в даты. Пользовательский интерфейс не позволяет вводить текст, такой как «FF» или «EG». Так что мы немного озадачены тем, как они попадают в БД.

Кто-нибудь видел подобную проблему?

Ответы [ 3 ]

3 голосов
/ 24 августа 2011

Нет, VARCHAR2 типы не включают в себя какие-либо escape-последовательности.

Похоже, что приложение, с которым вы работаете, имеет довольно сложную логику, которая позволяет ему хранить даты в виде символов различного типа.строки.Буквы, которые вы видите, вероятно, что-то значат для приложения.

Это причина # 136, что даты должны всегда храниться в столбце DATE и никогда в столбце VARCHAR2.В противном случае какой-нибудь предприимчивый разработчик на этом пути решит, что имеет смысл хранить некоторые пользовательские маски формата в данных, чтобы решить некоторую проблему отображения, которая затрудняет или делает невозможным обновление данных или создание отчетов по ним.за пределами этого одного конкретного приложения.

0 голосов
/ 24 августа 2011

значение даты и времени можно преобразовать в varchar с помощью функции to_char. Выходной формат даты зависит от формата, указанного в функции to_char.Так что должно быть что-то не так с форматом функции to_char, http://download.oracle.com/docs/cd/B19306_01/server.102/b14200/sql_elements004.htm#i34510

0 голосов
/ 24 августа 2011

В столбце VARCHAR2 будут храниться любые предоставленные вами данные (т. Е. Через SQL INSERT / UPDATE).

Есть ли у вас проверка входных данных на стороне сервера (т. Е. Не проверки javascript) перед входными данными перед вами?сохранить его в базе данных?Если это невозможно, какой-либо сценарий или злоумышленник пытается внедрить вредоносный контент в вашу базу данных или поставить под угрозу ваше веб-приложение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...