2013-05-21 4 views
3

Должен ли я использовать cast(x as typename) или x::typename в PostgreSQL?PostgreSQL CAST (x AS typename) или x :: typename

Я не смог найти какую-либо документацию для x::typename версии броска, за исключением одного предложений в documentationПо умолчанию бросок может быть вызван только запросом явного литым, что является явным CAST (х AS TypeName) или х :: имяТипа построить.»

является единственным отличием, что cast(x as typename) в sql-standard пока x::typename нет?

Я предпочитаю x::typename все время, как он короче.

ответ

5

x::typename - postgresql конкретный. Если вы предпочитаете это, и вам не нужно работать с базами данных без postgresql, вы можете использовать их.

Руководство по литью here. Как вы увидите, существует третий стиль, но он не рекомендуется.

+1

Да. Различия в typenames делает вопрос о переносе спорный вопрос * во многих случаях *. Однако, если имена типов совместимы между позами и другой СУБД, тогда 'cast' может быть, но' :: 'вряд ли будет. –

+0

Означает ли это, что поддержка '::' может быть удалена в некоторой будущей версии PostgreSQL? Мы не используем другие СУБД, но часто обновляемся до последней версии PostgreSQL. –

+1

Они могут, но я не думаю, что это возможно. Также они, вероятно, сначала откажутся от использования, чтобы дать каждому время обновить код. Также такие изменения будут происходить только в основных версиях, т.е. с 9,2 до 9,3, а не на обновлениях обслуживания. – Eelke

Смежные вопросы