SQL запрос в SQLite - страница 8

 
Yuriy Zaytsev #:

Надо будет учесть как выставлены настройки , иногда базу отстраивают с чувствительностью к регистру,

но чаще делают настройки базы без учета регистра.  т е если все хорошо отcев пройдет и  для _clt  и _CLT   и _Clt _cLt   и т д

p.s.

но судя по всему там всегда _CTL в верхнем регистре потому все хорошо!

Но брокеры точнее их службы ИТ - коварные  - могут от каких то своих внутренних соображений через пол года или 3 года влепить в нижнем регистре  _ctl

и если база настрена без чувствительности к регистру - то все отработает без проблем.

Меня всегда смущалао что у разных брокеров по разному может называться одна и таже субстанция например EURUSD у некоторых особо талантливых может быть t_EURUSD :) и. т. д. с вариантами

Огромное спасибо!

FideDac в Делфи 10.4.2 не чувствителен к регистру

 
prostotrader #:

Огромное спасибо!

FideDac в Делфи 10.1.2 не чувствителен к регистру

одной проблемой меньше. Но у MSSQL для подобных случаев  есть например UPPER() , 

не знаю как у вашей версии SQL сервера , но что то аналогичное может быть.


 
Yuriy Zaytsev #:

одной проблемой меньше. Но у MSSQL есть например UPPER

не знаю как у вашей версии SQL сервера - но что то аналогичное может быть


Ок, спасибо еще раз, все получилось


 
Yuriy Zaytsev #:

Сергей , лучше примером запроса, человек SQL пока не знает.


А как добавить проверку, что обе таблицы существуют?

 
prostotrader #:

А как добавить проверку, что обе таблицы существуют?

вот таким лёгким движением руки вы ставите в тупик любого кто хоть краем (типа меня) знаком с SQL :-)

НИКАК

в реляционной модели все таблицы заведомо известны

 
prostotrader #:

А как добавить проверку, что обе таблицы существуют?

SELECT count(*) as kol  FROM information_schema.tables

WHERE table_name = 'имявашейтаблицы' Limit 1


Попробуйте так , kol = 1 если таблица есть, 0 если нет 

Надо знать имя вашей  схемы 

information_schema


В sql баз есть системные таблицы в которых хранятся имена таблиц конкретной базы 

У разных sql  эти системные данные могут быть разными 

 
prostotrader #:

А как добавить проверку, что обе таблицы существуют?

Для sqlite3 вероятно  можно так


SELECT name FROM sqlite_master WHERE type='table' AND name='название_таблицы';


Попробуйте для начала такой запрос 

SELECT * FROM sqlite_master

Именно с sqllite на практике не приходилось работать , но в системных таблицах реализации этого sql сервера точно есть табличка в которой можно найти вашу 

Таблицу 

 
Yuriy Zaytsev #:

Для sqlite3 вероятно  можно так


SELECT name FROM sqlite_master WHERE type='table' AND name='название_таблицы';


Попробуйте для начала такой запрос 

SELECT * FROM sqlite_master

Именно с sqllite на практике не приходилось работать , но в системных таблицах реализации этого sql сервера точно есть табличка в которой можно найти вашу 

Таблицу 

Спасибо, понятно

 
Maxim Kuznetsov #:

вот таким лёгким движением руки вы ставите в тупик любого кто хоть краем (типа меня) знаком с SQL :-)

НИКАК

в реляционной модели все таблицы заведомо известны

В системных таблицах можно , просто  делается запрос на наличие таблицы.

 
Yuriy Zaytsev #:

В системных таблицах можно , просто  делается запрос на наличие таблицы.

Спасибо, я поступил по другому.

Когда я создаю таблицы, то заношу их имена в массив имен,

а перед тем, как сделать запрос к базе, я просто проверяю есть ли таблица

в моем массиве.

SesTblName:= 'FORTS_REFDATA_REPLsession';
          TblName:= 'FORTS_REFDATA_REPLfut_sess_contents';
          if((MatchStr(SesTblName, aList)) and (MatchStr(TblName, aList))) then
          begin
   // Запрос в базу
end;