我从 sqlite 中得到了奇怪的行为。列中的值相同,但 SELECT DISTINCT 看到不同的值

问题描述 投票:0回答:1

我从 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 中选择不同的类别”

sql lite 数据库链接

sql sqlite insert distinct
1个回答
0
投票

这是字节顺序标记(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;
© www.soinside.com 2019 - 2024. All rights reserved.