我在Windows 7上使用sqlite3,来自sqlite.org的sqlite3.exe程序
我正在使用SELECT在我正在创建的表中插入参数。其中一个参数是来自现有表的特定ID。 ID由数字和字母组成;例如,19M42DS31
我的插入语句如下所示:
insert into TABLE1
values
((select ID
from EMPLOYEES
where FIRSTNAME = 'Ben' and LASTNAME = 'Smith')+'',
...
);
然而,考虑到19M42DS31,sqlite3只选择19并忽略过去'M'的所有内容。换句话说,它只存储“19”,这显然不是我想要的。我想要完整的身份证。
非常感谢任何帮助。
EDIT; ID的类型为varchar
编辑2:我刚刚测试了另一个ID,如5987463FG32,它实际上只显示了'FG'之前的数字(5987463),之后没有任何内容。
答案 0 :(得分:0)
该列应为VARCHAR数据类型
答案 1 :(得分:0)
尝试过这个,似乎是你作为INSERT的一部分导致问题的+''
。这有效:
insert into TABLE1
values
((select ID
from EMPLOYEES
where FIRSTNAME = 'Ben' and LASTNAME = 'Smith')
);
......这不是:
insert into TABLE1
values
((select ID
from EMPLOYEES
where FIRSTNAME = 'Ben' and LASTNAME = 'Smith')+''
);
(我最初只是在没有+''
的情况下尝试过它,因为我无法真正看到它的重点。)
我不太了解sqlite,我很害怕,但如果你正在尝试字符串连接,我认为你正在寻找的运算符是||
,而不是+
。我猜测 +
实际上是sqlite中的算术运算符,这就是你的字符串被转换为数字的原因 - 可能空字符串被视为零,并添加到表中值的数字开头。
(为什么 那里+''
,顺便说一下?你想通过添加它做什么?)