gpt4 book ai didi

java - 如何获取列中记录的最大长度并使用它来检查 SQLite 中的相等性?

转载 作者:搜寻专家 更新时间:2023-11-01 08:02:57 25 4
gpt4 key购买 nike

我正在使用 sqlite 开发一个聊天机器人应用程序,聊天机器人是一个模拟人与人聊天的程序!在我的应用程序中,用户输入一些东西作为输入,我将它用作我的 JAVA 和 SQLite 查询中的变量,例如考虑这个表:

id - 用户 - 聊天机器人

1 - 如何 - 知道如何做很重要
2 - 你好吗 - 我很好

我使用此代码从 DB 获得正确答案:(来自本主题:How use “LIKE” and “%” to check similarity to variable in android(Java code)

cursor = db.rawQuery("SELECT chatbot FROM sentence"+ 
" WHERE ? LIKE '%' || " + USER + " || '%'"
,new String[] { newMessage });

此代码在大多数情况下都可以正常工作,但在这种情况下,它不起作用:当用户输入输入时,你好吗,它选择“我很好”,这是正确的答案,但不幸的是选择“知道它很重要吗?怎么也一样,

我使用此代码只选择用户列的最大长度的记录:

cursor = db .rawQuery( "SELECT shompet FROM sentence" +
"WHERE LENGTH(user) = SELECT MAX(LENGTH(user)) from sentence "
+ " WHERE ? LIKE '%' || " + USER + " || '%'", new String[] {
newMessage });

但是当我在模拟器上运行它时,它关闭并显示“应用已停止”,我认为它有语法错误,

请帮我纠正这个语法或者给我另一种方法来处理这个问题,等待你的建议!

最佳答案

您需要像这样使用内部查询。

SELECT chatbot, user
FROM sentence
WHERE LENGTH(user) = (
SELECT MAX(LENGTH(user))
FROM sentence
WHERE 'not exactly' LIKE '%' || user || '%'
) AND 'not exactly' LIKE '%' || user || '%'

SQL Fiddle输出:

+------------+-------------+
| CHATBOT | USER |
+------------+-------------+
| why not | not exactly |
+------------+-------------+

因此,您需要将光标 创建为

cursor = db.rawQuery("SELECT chatbot FROM sentence " + 
"WHERE LENGTH(user) = ( " +
" SELECT MAX(LENGTH(user)) FROM sentence " +
" WHERE ? LIKE '%' || " + USER + " || '%' " +
") AND ? LIKE '%' || " + USER + " || '%' ",
new String[] { newMessage, newMessage });

关于java - 如何获取列中记录的最大长度并使用它来检查 SQLite 中的相等性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18419559/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com