Интернет, компьютеры, софт и прочий Hi-Tech

Подписаться через RSS2Email.ru

Типы данных в SQLite версии 3

В большинстве движков баз данных SQL (насколько нам известно, практически во всех движках SQL, отличных от SQLite) используется строгая статическая типизация. При статической типизации, тип данных того или иного значения определяется его контейнером — конкретным столбцом, в котором это значение хранится.

SQLite использует более общую систему типизации — динамическую, когда тип данных значения связан с самим значением, а не с его контейнером. Динамическая система SQLite имеет обратную совместимость со статическими системами других СУБД. В том смысле, что SQL-запросы статически типизированных баз данных должны работать так же и с SQLite. Однако, динамическая типизация в SQLite позволяет выполнять операции, невозможные в традиционных жестко типизированных базах данных.

Биржа долевых инвестиций SIMEX.

Публикация сокращена для удобства обсуждения.
Полная версия: Типы данных в SQLite версии 3

Метки материала: sqlite, типы данных, it, программирование, sql, разработка по, db, информационные технологии, по, бесплатное по, базы данных, софт, software, soft, программное обеспечение, ит, спо, программное обеспечение по


12 комментариев

18.09.2011 11:41:29 #
Mozilla Firefox Гость anonimous
спасибо за статью!
18.09.2011 13:43:36 #
Mozilla Firefox dima
Пожалуйста Well
08.10.2011 19:09:19 #
Opera Гость Вячеслав
Добрый день, есть вопросы по конвертации базы SQL в тхт. Буду благодарен за помощь. vagis2000@mail.ru
09.10.2011 01:51:46 #
Mozilla Firefox dima
Отписался.
03.11.2011 11:24:46 #
Google Chrome Гость krakoss
прошу подсказать как написать такой запрос к базе данных SQLite
SELECT        id, dateR, text + ' ' + CONVERT(varchar, dateR, 104) + ' ' + CASE WHEN month(dateR) = 1 THEN 'январь' WHEN month(dateR)
                        = 2 THEN 'февраль' WHEN month(dateR) = 3 THEN 'март' WHEN month(dateR) = 4 THEN 'апрель' WHEN month(dateR) = 5 THEN 'май' WHEN month(dateR)
                        = 6 THEN 'июнь' WHEN month(dateR) = 7 THEN 'июль' WHEN month(dateR) = 8 THEN 'август' WHEN month(dateR) = 9 THEN 'сентябрь' WHEN month(dateR)
                        = 10 THEN 'октябрь' WHEN month(dateR) = 11 THEN 'ноябрь' WHEN month(dateR) = 12 THEN 'декабрь' END AS SearchFiled
FROM            News
WHERE        (text + ' ' CONVERT(varchar, dateR, 104) + ' ' + CASE WHEN month(dateR) = 1 THEN 'январь' WHEN month(dateR)
                        = 2 THEN 'февраль' WHEN month(dateR) = 3 THEN 'март' WHEN month(dateR) = 4 THEN 'апрель' WHEN month(dateR) = 5 THEN 'май' WHEN month(dateR)
                        = 6 THEN 'июнь' WHEN month(dateR) = 7 THEN 'июль' WHEN month(dateR) = 8 THEN 'август' WHEN month(dateR) = 9 THEN 'сентябрь' WHEN month(dateR)
                        = 10 THEN 'октябрь' WHEN month(dateR) = 11 THEN 'ноябрь' WHEN month(dateR) = 12 THEN 'декабрь' END LIKE '%' + @txtSearch + '%')
ORDER BY dateR DESC

С уважением Юрий krakoss@mail.ru
03.11.2011 14:37:29 #
Mozilla Firefox dima
Ужас. Это T-SQL?
 
В SQLite нет ни функции CONVERT, ни оператора CASE WHEN ... THEN ... END. Но в своем приложении вы можете описать их замены. Пусть это будут, например, функции my_convert(date) и my_case(month). Тогда ваш SQL-запрос можно будет переписать следующим образом:
 
SQL
SELECT id, dateR, SearchFiled
FROM (SELECT id,
             dateR,
             (text || ' ' || my_convert(dateR) || ' ' ||
              my_case(strftime('%m', dateR))) AS SearchFiled
      FROM News) AS n
WHERE SearchFiled LIKE '%' || :txtSearch || '%'
ORDER BY dateR DESC;
31.01.2013 15:16:57 #
Opera Гость Vladimir
Скажите пожалуйста, в SQLite 3 есть оператор CONNECT BY prior? запрос типа
SELECT employee_id, last_name, manager_id
     FROM employee
     CONNECT BY PRIOR manager_id=employee_id
     START WITH last_name= 'ADAMS'
31.01.2013 16:43:13 #
Mozilla Firefox dima
Нет. SQLite не поддерживает рекурсивных запросов. Получение соответствующих данных придется реализовывать на уровне приложения.
 
Если же Вам жизненно необходимо получить всех подчиненных Адамса одним запросом, то можете пересмотреть структуру таблицы employee, реализовав, например, nested sets.
01.02.2013 11:28:02 #
Opera Гость Vladimir
спасибо
01.02.2013 13:10:57 #
Mozilla Firefox dima
Пожалуйста Well

Оставьте, пожалуйста, свой комментарий к публикации

Представиться как     Антибот:
   

Просьба не постить мусор. Если вы хотите потестить xBB, воспользуйтесь кнопкой предварительного просмотра на панели инструментов xBBEditor-а.


© 2007-2017, Дмитрий Скоробогатов.
Разрешается воспроизводить, распространять и/или изменять материалы сайта
в соответствии с условиями GNU Free Documentation License,
версии 1.2 или любой более поздней версии, опубликованной FSF,
если только иное не указано в самих материалах.