Можем ли мы сохранить в поле даты что-либо, кроме действительной даты или нулевого значения? - PullRequest
0 голосов
/ 08 октября 2010

Я работаю над Oracle и Perl. У меня есть три поля в таблице (A, B, C), и я хотел бы сформировать для каждой строки в таблице строку a_b_c, используя «join». С относится к дате. Может принимать нулевые значения. В этом случае это «объединение» будет возвращать предупреждение «использование неинициализированных значений в соединении». Я знаю, что я должен выбрать nvl (C, что-то), чтобы я получил a_b_something, когда C равен нулю. Можете ли вы предложить мне, что это за «что-то» может быть, если я хочу различать эти строки и другие строки.

Короче говоря, могу ли я хранить в поле даты что-либо кроме действительной даты или нулевого значения?

Ответы [ 2 ]

0 голосов
/ 08 октября 2010

Как сказал OMG Ponies, нельзя хранить дату в поле DATE в Oracle.

Как указывает Хоббс, вы можете использовать NVL для преобразования нулевой даты в строку - например, NVL(TO_CHAR(C),'NULLDATE') вернет строку 'NULLDATE', если дата нулевая.

0 голосов
/ 08 октября 2010

Я знаю, что мне нужно выбрать nvl (C, что-то), чтобы получить a_b_something, когда C равно нулю

Выбор не сохранение значениев столбце, и Oracle фактически передает datetime обратно клиентам в виде строк, поэтому вполне возможно, что вы можете просто использовать NVL(col, ''), не путая DBI вообще.

Если это не сработает, вы всегда можетепросто создайте все это в SQL: просто выберите

A || '_' || B || '_' || (CASE WHEN C IS NULL THEN '' ELSE TO_CHAR(C) END)

в качестве одного из столбцов.

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