0

我在 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”,这显然不是我想要的。我要完整的身份证。

任何帮助将不胜感激。

编辑; ID 是 varchar 类型

编辑2:我刚刚测试了另一个ID,如5987463FG32,它实际上只显示'FG'(5987463)之前的数字,之后什么也没有。

4

2 回答 2

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 中的算术运算符,这就是为什么您的字符串被转换为数字的原因 - 可能空字符串被视为零,并添加到表中值的数字开头。

(顺便说一句,为什么+''在那里?你想通过添加它来做什么?)

于 2013-11-07T09:39:02.453 回答
0

该列应为 VARCHAR 数据类型

于 2013-11-07T08:56:20.403 回答