Форум: "Прочее";
Текущий архив: 2016.01.31;
Скачать: [xml.tar.bz2];
ВнизcamelCase идентификаторы в Postgresql Найти похожие ветки
← →
Дмитрий С © (2015-05-27 14:16) [0]В интернете искал, не нашел решения (и начинаю верить что его и нет).
Java 8 + Postgresql 9.4.
Я привык использовать везде caseCase идентификаторы, тем более что в java так принято.
Известная ситуация, если хочешь в Postgres создать колонку, например, displayName, то название нужно взять в кавычки. При этом в запросах название колонки также необходимо указывать в кавычках, что очень неудобно, к тому же в коде java двойные кавычки нужно экранировать - запрос получается плохо-читаемым.
Вопрос, как сделать так, чтобы Postgres любо всегда принимал идентификаторы в том регистре в котором они указаны, либо всегда сравнивал без учета регистра?
Уже второй раз сталкиваюсь с проблемами с camelStyle для баз данных. Сначала в MySql, теперь тут. Не ожидал даже.
← →
Ega23 © (2015-05-27 14:26) [1]ЕМНИП, если в скрипте создания указал всё в lowercase, то потом в запросе пиши как хочешь.
← →
Игорь Шевченко © (2015-05-27 14:26) [2]
> Я привык использовать везде caseCase идентификаторы, тем
> более что в java так принято.
В базах данных camel case не принято использовать, не надо создавать лишних проблем на пустом месте
← →
Ega23 © (2015-05-27 14:33) [3]
> В базах данных camel case не принято использовать
Это спорно, стандарта я не видел. Более того, у каждой СУБД свой стиль в хелпе.
← →
Дмитрий С © (2015-05-27 14:35) [4]
> Ega23 © (27.05.15 14:26) [1]
> ЕМНИП, если в скрипте создания указал всё в lowercase, то
> потом в запросе пиши как хочешь.
Так и есть. Неудобство в том, что среда разработки помогая подставлять идентификаторы, вставляет их в нижнем регистре (ей неоткуда узнать регистр), что тоже не очень удобно.
> Игорь Шевченко © (27.05.15 14:26) [2]
Похоже придется привыкать.
В Java свои правила приняты, в Delphi, в C, в PHP и т. д., но нигде они не навязываются. Как в анекдоте, можешь писать на фортране на чем угодно. Странно, что базах правила именования фактически навязаны.
← →
Ega23 © (2015-05-27 14:54) [5]
> Странно, что базах правила именования фактически навязаны.
Зависит от СУБД. В MSSQL пиши как хочешь (хотя в хелпе всё в верхнем регистре).
← →
кгшзх © (2015-05-27 15:15) [6]был бы мсскл не только на винде - в нем бы тоже не пиши как хочешь было
← →
кгшзх © (2015-05-27 15:18) [7]да и вообще. мало ли какие приколы есть и были чтобы хотеть писать как хочется.
в древности например когда на оракл ходили через бде - пиши как хочешь, но если хочешь не ридонли датасет - пиши буквами только большими.
← →
Дмитрий С © (2015-05-27 18:50) [8]
> да и вообще. мало ли какие приколы есть и были чтобы хотеть
> писать как хочется.
Была бы причина объективная для этого, а так не понимаю.
Мы как бы уже в 21 веке живём, да и посгрес не поделка студенческая.
← →
Ega23 © (2015-05-27 18:53) [9]
> да и посгрес не поделка студенческая
opensource, со всеми вытекающими.
← →
кгшзх © (2015-05-27 19:57) [10]Была бы причина объективная для этого, а так не понимаю.
есть объективная причина регистрозависимых идентификаторов в языках?
а в именах файлов не на винде?
а есть вообще объективная причина существования строчных и прописных символов?
или здесь только постгресс необъективно выпендривается с идентификаторами?
← →
ухты © (2015-05-27 20:57) [11]ну дело то не столько в регистре, а в этих странных кавычках, насколько понял ТС.
тоже приходилось работать с, например, Apache Cassandra, такая же ерунда, в итоге все написали в lowercase.
← →
кгшзх © (2015-05-27 21:30) [12]дело здесь не в кавычках, а в человеке неделю назад познакомившемся с сервером, и заявляющем, что по его мнению нет объективным причин в том что сервера так устроены.
← →
Ega23 © (2015-05-27 22:21) [13]
> или здесь только постгресс необъективно выпендривается с
> идентификаторами?
В каждой избушке - свои игрушки. У postgres - если в lowercase, то потом регистронезависимо, иначе - в кавычках. У firebird - если без кавычек, то регистронезависимо. У MSSQL - вообще фиолетово.
Единого стандарта ожидать, ИМХО, глупо.
← →
Дмитрий С © (2015-05-28 01:13) [14]
> У MSSQL - вообще фиолетово.
У MS, как бы его не ругали, со здравым смыслом обычно все в порядке. Обычно если у них что-то запрещено, то скорее всего этого хотеть не надо.
> дело здесь не в кавычках, а в человеке неделю назад познакомившемся
> с сервером, и заявляющем, что по его мнению нет объективным
> причин в том что сервера так устроены.
Что с человеком-то не так?
Я думаю, что дело в том, что этот сервер делает неочевидное, и по моему скромному мнению, нелогичное преобразование. И это вызывает раздражение.
В моем проекте используется Java и JavaScript. Оба caseCamel style, поэтому мне удобнее и в базе поля так называть, но разработчикам postgres, конечно, виднее. Жаль я только сейчас занялся им. Пару месяцев назад была возможность задать этот вопрос одному из его разработчиков.
> тоже приходилось работать с, например, Apache Cassandra,
> такая же ерунда, в итоге все написали в lowercase.
Я решил, что буду писать в кавычках. Благо среда разработки их подставляет автоматически туда, где они нужны.
Можно, еще, конечно, предпроцессор запроса сделать, который выполнит замену:
query.replaceAll("[a-z][a-z0-9]*([A-Z]+[a-z0-9]*)+", "\"$0\"");
Как вам идея такая?
← →
Дмитрий С © (2015-05-28 01:15) [15]Можно не отвечать. Плохая идея, сам понимаю.
← →
Ega23 © (2015-05-28 02:49) [16]
> Как вам идея такая?
Покрасить ногти в золотой цвет и отправить в барак. За желание странного.
← →
кгшзх © (2015-05-28 09:50) [17]В моем проекте используется Java и JavaScript.
Когда ты пишешь на ява или на яваскрипте - ты пишешь на яве или на ява скрипте.
и там у тебя любой твой любимый стайл.
а когда ты пишешь текст sql запроса в любом вообще языке ты не оперируешь этим любым языком, а оперируешь языком сервера и это уже кусок программы не на этом твоем языке а на языке сервера.
я б еще понял твои удивления, если бы ты и письма знакомым писал в стиле caseCase только потому что так привык писать в яве и яваскрипте.
← →
Плохиш © (2015-05-28 09:57) [18]Честно говоря, совершенно не понял о чём ветка. Поплакаться о том, что мир не справедлив и всё делается по идеям разработчика, а не нежелающих читать документацию.
> Дмитрий С © (28.05.15 01:13) [14]
> Пару месяцев назад была возможность задать этот
> вопрос одному из его разработчиков.
В чём проблема? Разработчик ушёл в подполье или вообще умер?
Так он там не единственный и форум имеется и даже онлайн документацию можно комментировать.
← →
кгшзх © (2015-05-28 10:07) [19]да вот в чем проблема.
sqlText = "select * from myTable"; //это как бы должно быть логично
//тогда почему нелогично (или тоже логично?) вот это:
myEmailText = "здраВствуте мой дяДя валенТин сергееВич, пиШет вам плеМянник диМа";
← →
Дмитрий С © (2015-05-28 11:21) [20]
> Поплакаться о том, что мир не справедлив
Действительно. Стресс снять.
Убедиться, что решения нет и думать как выкрутиться.
> не нежелающих читать документацию
Вот тут зря. Читать кроме нее, похоже, особо нечего.
> а когда ты пишешь текст sql запроса в любом вообще языке
> ты не оперируешь этим любым языком, а оперируешь языком
> сервера и это уже кусок программы не на этом твоем языке
> а на языке сервера.
Почему при этом в mssql все ок - пиши как хочешь, в mysql - то же (с некоторыми ограничениями, которые можно пережить), в oracle не знаю как, в sqlite - тоже ок, а в posgres - будь добр, пиши маленькими все?
← →
кгшзх © (2015-05-28 11:28) [21]в mysql - то же
не тоже, а снова мало личного опыта.
мускул есть на винде (и в нем как "тоже"), а есть на линупсах.
а тот что на линупсах бывает для i386, для arm и фиг знает для чего еще.
Так вот в них - ни разу "не тоже"
← →
Дмитрий С © (2015-05-28 12:10) [22]
> кгшзх ©
Друг, в скобках прочти.
← →
кгшзх © (2015-05-28 12:24) [23]набирайся опыта.
и будут тебе "объективные причины"
Страницы: 1 вся ветка
Форум: "Прочее";
Текущий архив: 2016.01.31;
Скачать: [xml.tar.bz2];
Память: 0.51 MB
Время: 0.003 c