Как преобразовать VarChar в целое число? - PullRequest
0 голосов
/ 26 сентября 2019

У меня есть столбец времени, который был определен как VarChar, я не могу изменить тип столбца на Integer, потому что Integer не распознает «:» между моими числами, теперь мне нужно использовать метод sum, чтобы вычислить, сколько времени занимаетчеловек работает в моем офисе, но я не могу использовать метод сумм, потому что VarChar не может быть суммирован.Как я могу преобразовать VarChar в Integer и удалить ":" между числами.

1 Ответ

2 голосов
/ 26 сентября 2019

Сначала в SQLite, за исключением псевдонима столбца rowid (столбец, определенный специально с использованием column_name INTEGER PRIMARY KEY), любой тип столбца может хранить значения любого типа.Таким образом, нет необходимости изменять тип столбца.

Во-вторых, вы можете использовать sum(replace(your_column,':','') для суммирования и замены двоеточия при извлечении данных.

В-третьих, если дата / время / датаи время хранится в распознанном формате, вы можете легко добавлять, вычитать и манипулировать датами и временем. SQL в понимании SQLite - Функции даты и времени .

Если вы редактируете свой вопрос и предоставляете своиСхема таблицы (макет), пример данных и ожидаемые результаты.Затем можно дать более полный ответ.

В качестве демонстрации приведенного выше рассмотрим: -

DROP TABLE IF EXISTS anycolumntypedemo;
CREATE TABLE IF NOT EXISTS anycolumntypedemo (
    id INTEGER PRIMARY KEY /* CAN ONLY HAVE INTEGER VALUE AS DATA TYPE MISMATCH ERROR */,
    col1 VARCHAR,
    col2 BLOB,
    col3 nrealyanythinggoestype
);
INSERT INTO anycolumntypedemo VALUES
    (null,100,100,100),
        (null,'FRED','BERT','HARRY'),
        (null,x'0102',datetime('now'),'')
;
SELECT *, replace(col2,':','') AS getridofcolons FROM anycolumntypedemo;

Это: -

  1. Удаление ( DROP S) таблица, если она существует, для возможности повторного запуска демонстрации.
  2. CREATE s таблица демонстрации со столбцами
    1. id псевдоним rowid
    2. col1 как тип VARCHAR (типовое сродство является правильным термином)
    3. col2 как тип BLOB (байт [])
    4. col3 как действительно глупый тип , но он работает
  3. Вставляет 3 строки,
    1. все с идентификатором автоматически генерируются как целое число
    2. 1-й ряд с col1-col3, имеющим значение 100
    3. , 2-й ряд с col1-col3, имеющим строки (TEXT)
    4. 3-я строка с col1 в качестве байта [] (2 байта 01 и 02), col2 с текущей датой и временем (формат будет YYYY-DD-MM-чч: мм: сс) и col3 в виде пустой строки
  4. Выбирает все столбцы плюс и дополнительные производныестолбец, представляющий собой значение col2, за исключением того, что удалены двоеточия .

В результате получается: -

enter image description here

  • Красным кружочком показано, как инструмент управления SQLite (Navicat) отображает BLOB.
  • Желтые выделенные значения показывают удаленных двоеточий из даты и времени.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...