Sql 将值插入带有Postgres的文本列时出现问题
当我试图在Postgres DB的文本列中插入字母数字值时,我遇到了一个错误。这是表定义 ] 这是我用来向表中插入数据的查询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
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允许两者兼而有之。