选择操作不显示字符

时间:2013-11-07 08:51:25

标签: sql sqlite

我在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),之后没有任何内容。

2 个答案:

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

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