Проблема с вводом значения в столбец TEXT с помощью Postgres - PullRequest
0 голосов
/ 06 октября 2019

Я получаю сообщение об ошибке при попытке вставить буквенно-цифровое значение в столбец TEXT в базе данных Postgres. Это определение таблицы

![enter image description here] 1

Это запрос, который я использую для вставки данных в таблицу

INSERT INTO sensor_data
            (
                time,
                i1, i2, i3, i4,
                i5, i6, i7, i8,
                mrt,air_temperature,
                humidity,tvoc, device_id)
        VALUES (to_timestamp(1667595922) AT TIME ZONE 'UTC',
                41.340000,  26.160000, 25.860000, 26.160000,
                25.900000, 25.960000, 26.720000, 25.580000,
                26.085000, 28.065536,
                 55.204773,  40.000000, 1a0032000947363339343638
            );

Это сообщение об ошибке, которое я получаю

ОШИБКА: синтаксическая ошибка в или рядом с "a0032000947363339343638" LINE 12: 55.204773, 40.000000, 1a00320009473633 ...

Когда я вхожу в этозапрос, он работает просто отлично.

INSERT INTO sensor_data
            (
                time,
                i1, i2, i3, i4,
                i5, i6, i7, i8,
                mrt,air_temperature,
                humidity,tvoc, device_id)
        VALUES (to_timestamp(1667595922) AT TIME ZONE 'UTC',
                41.340000,  26.160000, 25.860000, 26.160000,
                25.900000, 25.960000, 26.720000, 25.580000,
                26.085000, 28.065536,
                 55.204773,  40.000000, 10032000947363339343638
            );

Единственное различие между двумя запросами - это значение device_id. Вставка завершается неудачно, когда значение равно «1a0032000947363339343638», и работает нормально, когда значение равно «10032000947363339343638».

Почему при попытке вставить '1a0032000947363339343638' произошла ошибка вставки, даже если тип данных - TEXT? И как я могу получить таблицу для принятия 1a0032000947363339343638 'для идентификатора устройства?

1 Ответ

0 голосов
/ 06 октября 2019

Хотя числа не нужно заключать в кавычки, строки нужно заключать в кавычки, чтобы отличать их от других синтаксисов и учитывать пробелы.

В Postgres это должна быть одинарная кавычка. В других базах данных допускается другое цитирование.

INSERT INTO sensor_data
            (
                time,
                i1, i2, i3, i4,
                i5, i6, i7, i8,
                mrt,air_temperature,
                humidity,tvoc, device_id)
        VALUES (to_timestamp(1667595922) AT TIME ZONE 'UTC',
                41.340000,  26.160000, 25.860000, 26.160000,
                25.900000, 25.960000, 26.720000, 25.580000,
                26.085000, 28.065536,
                 55.204773,  40.000000, '1a0032000947363339343638'
            );

Более подробную информацию можно найти в документации Postgres по константам .

...