В чем разница между CHARACTER VARYING и VARCHAR в PostgreSQL?


Ответы:


129

Varying - это псевдоним для varchar, поэтому без разницы, см. Документацию :)

Обозначения varchar (n) и char (n) - это псевдонимы для символа изменяющийся (n) и символа (n), соответственно. символ без спецификатора длины эквивалентен символу (1). Если изменение символа используется без спецификатора длины, тип принимает строки любого размера. Последний является расширением PostgreSQL.


9
Наоборот: varchar - это псевдоним для изменения. Не буду педантичным, но это прямо в вашей цитате.
zerzevul 06

2
@zerzevul Здесь можно не согласиться с документацией и согласиться с Чарльзом, учитывая, что varchar(n)и т. д. являются стандартами ANSI, и этот синтаксис специфичен для PostgreSQL.
BobRodes,


4

Единственная разница в том, что CHARACTER VARYING более дружелюбен к человеку, чем VARCHAR.


1
@joop У меня не было возможности познакомиться с COBOL, но я познакомился с английским языком, и я думаю: "VARCH ARe what?" :-)
INOR

8
Кроме того, я думаю, что это сбивает с толку топ-программистов;) Они привыкли к varchar
manocha_ak

3

И то, и другое - одно и то же, но многие базы данных не предоставляют различные символы, которые в основном предоставляет postgreSQL. Итак, для многопользовательской базы данных, такой как Oracle Postgre и DB2, хорошо использовать Varchar


2

Короткий ответ: разницы нет.

Длинный ответ: CHARACTER VARYINGэто официальное имя типа из стандарта ANSI SQL, которое должны поддерживать все совместимые базы данных. VARCHARэто более короткий псевдоним, который также поддерживают все современные базы данных. Я предпочитаю, VARCHARпотому что оно короче, а более длинное имя кажется педантичным. Однако такие инструменты postgres, как pg_dumpи, \dбудут выводить character varying.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.