Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2016.01.31;
Скачать: CL | DM;

Вниз

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;
Скачать: CL | DM;

Наверх




Память: 0.53 MB
Время: 0.005 c
15-1432714180
Pavia
2015-05-27 11:09
2016.01.31
Двойной замок


4-1275994363
djsmentya
2010-06-08 14:52
2016.01.31
Twain интерфейс


2-1404898048
alexdn
2014-07-09 13:27
2016.01.31
Изменить записи в MainMenu


15-1432953284
wl
2015-05-30 05:34
2016.01.31
MMU


2-1404975191
i2e
2014-07-10 10:53
2016.01.31
Как сделать цветные строки в StringGrid?