如何在Informix数据库中存储布尔值?插入语句报错求助
在IBM Informix Dynamic Server 14.10.FC10AEE中正确插入布尔值的方法
问题描述
使用的插入语句:
INSERT INTO person ('name', is_active) VALUES ('peter', true);
对应表结构:
| column | Data type |
|---|---|
| id | serial |
| name | char(50) |
| is_active | boolean |
执行语句时出现错误:
SQL Error [42000]: A syntax error has occurred.
尝试将true改为1后,又出现错误:
SQL Error [IX000]: Value does not match the type of column (is_active).
请问如何在Informix数据库中正确存储布尔值?
正确处理方式
1. 修正列名的引号问题
Informix中列名不能用单引号包裹(单引号仅用于字符串常量),原语句里'name'的单引号是语法错误的核心原因之一,需去掉单引号。
2. 布尔值的合法字面量取值
Informix的boolean类型不支持直接使用true/false或数字1/0,必须使用字符串形式的指定取值:
- 表示真:
't'、'T'、'y'、'Y'、'1'(注意是字符串格式的'1') - 表示假:
'f'、'F'、'n'、'N'、'0'(注意是字符串格式的'0')
完整正确的插入语句
-- 插入真值 INSERT INTO person (name, is_active) VALUES ('peter', 't'); -- 插入假值 INSERT INTO person (name, is_active) VALUES ('mary', 'f');
补充说明
如果使用参数化查询,可以直接绑定布尔类型参数;但手写SQL字面量时,必须使用上述字符串形式的取值。
内容的提问来源于stack exchange,提问作者Mi2830
相关产品推荐
相关产品推荐

