Sql 将值插入带有Postgres的文本列时出现问题

Sql 将值插入带有Postgres的文本列时出现问题,sql,postgresql,sql-insert,string-constant,Sql,Postgresql,Sql Insert,String Constant,当我试图在Postgres DB的文本列中插入字母数字值时,我遇到了一个错误。这是表定义 ] 这是我用来向表中插入数据的查询 INSERT INTO sensor_data ( time, i1, i2, i3, i4, i5, i6, i7, i8, mrt,air_temperature, humidity,t

当我试图在Postgres DB的文本列中插入字母数字值时,我遇到了一个错误。这是表定义

]

这是我用来向表中插入数据的查询

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”处或附近的语法错误 第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
            );
这两个查询之间的唯一区别是设备id值。当值为“1a0032000947363339343638”时,插入失败,当值为“10032000947363339343638”时,插入正常


即使数据类型是文本,为什么在尝试插入'1a0032000947363339343638'时插入失败?我如何让表接受1a0032000947363339343638'作为设备Id

虽然数字不需要加引号,但字符串必须加引号,以区别于其他语法,并允许使用空格

在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'
            );

您可以在SQL中的。

字符串常量需要用单引号(
)括起来。字符串常量的单引号是在SQL标准中定义的,这对Postgres@a_horse_with_no_name我特别想到的是那些可能会从MySQL学习的人,MySQL允许两者兼而有之。