SQLite3 Integer Max Value - PullRequest
       21

SQLite3 Integer Max Value

46 голосов
/ 15 декабря 2010
  1. Каково максимальное значение типа данных INTEGER в sqlite3?
  2. Как вы храните IP-адрес в базе данных?
  3. Что прилагается?
  4. Как создать таблицу, которая принадлежит конкретной базе данных, используя sql ddl?
  5. О чем эта ошибка?

ошибка при отображении списка систем каталог: нет такой таблицы: temp.sqlite_master Невозможно выполнить оператор

  1. Поддерживает ли текстовый тип данных sqlite3 поддержку юникода? Благодарю.

Ответы [ 5 ]

84 голосов
/ 15 декабря 2010
  1. Посмотрите на http://www.sqlite.org/datatype3.html Минимум - (2 63 ) == -9223372036854775808 и максимум 2 63 - 1 == 9223372036854775807
  2. Я бы подумал, что вы должны использовать varchar
  3. http://www.sqlite.org/lang_attach.html
  4. http://www.sqlite.org/lang_createtable.html
  5. может помочь Ошибка SQLite «нет такой таблицы»

в общем ознакомьтесь с sqlite документацией

6 голосов
/ 15 декабря 2010

INTEGER.Значение представляет собой целое число со знаком, которое хранится в 1, 2, 3, 4, 6 или 8 байтах в зависимости от величины значения.

Класс хранения INTEGER, например, включает 6 различных целочисленных типов данных:разной длины.Это имеет значение на диске.Но как только значения INTEGER считываются с диска и в память для обработки, они преобразуются в самый общий тип данных (8-байтовое целое число со знаком).

из http://www.sqlite.org/datatype3.html

Если у вас нет других причин, вы можете сохранить IP-адрес, используя TEXT.

3 голосов
/ 15 декабря 2010

По второму вопросу:

Вы можете сохранить IP-адрес в БД двумя способами:

  1. в виде строки.Это рекомендуется, поскольку он будет поддерживать как IPv4, так и IPv6 и не требует дополнительных хлопот с преобразованием IP-адресов.
  2. как целое число.IP - это 4 байта, которые можно объединить в одно целое число.Однако вы действительно этого хотите?Это доставит вам массу боли, превращая его в / из строки в любое время, когда это потребуется.
2 голосов
/ 22 декабря 2010

Поддерживает ли текстовый тип данных sqlite3 юникода

Да и нет.

Да, в этом SQLite позволяет хранить TEXT данные в UTF-8 или UTF-16. (Используйте PRAGMA ENCODING , чтобы выбрать внутренний формат.)

Нет, встроенные функции LOWER и UPPER действуют только на символы ASCII. Но вы можете переопределить функции и сопоставления , чтобы добавить эту поддержку. Это расширение ICU для SQLite, которое делает это.

2 голосов
/ 15 декабря 2010
  • Как вы храните IP-адрес в базе данных?

Самый простой способ - сохранить строковую форму (например, «127.0.0.1» или «::1»), поскольку с тех пор вы можете читать их вручную, а преобразование в адресную структуру (если нужно) будет простым. SQLite любит строки (которые используют тип TEXT) и эффективно обрабатывает их.

...