我从 SQLite 中得到非常奇怪的行为。
INSERT into tbltest (category,question) VALUES ('aa','t1'),('aa','t2'),('Ding 1','d1'),('Ding 1','d2');
SELECT DISTINCT category
FROM tbltest;
我得到了返回的数据:
类别 |
---|
啊 |
啊 |
叮1 |
我不明白。我的类别中应该只得到
aa
和 Ding 1
。多余的aa
从哪里来?当我从另一个程序复制字符串时会发生这种情况。无论如何,如果它
但不幸的是,当我从这里复制它并将其粘贴回来时,它的行为正确 所以我创建了一个到 sqlite 数据库的链接。请运行“从 tbltest 中选择不同的类别”
这是字节顺序标记(UNICODE 65279),正如您在评论部分中正确注意到的那样。 要在 sqlite 数据库中摆脱这个问题,您需要使用
trim
和 replace
函数。
如果你想摆脱导入阶段,你的代码应该如下所示:
INSERT into tbltest (category,question) VALUES
(TRIM(REPLACE('put_your_category_value_here', '\uFEFF', '')),'t1'),
(TRIM(REPLACE('put_your_category_value_here', '\uFEFF', '')),'t2'),
(TRIM(REPLACE('put_your_category_value_here', '\uFEFF', '')),'d1'),
(TRIM(REPLACE('put_your_category_value_here', '\uFEFF', '')),'d2')
或者,如果您只想要正确的投影,您可以使用该
SELECT
查询:
SELECT DISTINCT TRIM(REPLACE(category, '\uFEFF', ''))
FROM tbltest;