查询以检查我们是否有任何以输入字符串开头的行

Query to check if we have any row which start with input String

让我们说有值的列

"Html", "Java", "JQuery", "Sqlite"

如果用户输入

"Java is my favorite programming language"

那么结果应该是

1 row selected with value "Java"

因为输入的句子以"Java"开头

但是如果用户输入

"My application database is in Sqlite"

那么查询应该 return 为空。

0 row selected

因为输入的句子不是以"Sqlite"开头的。

我正在尝试以下查询:

SELECT * FROM demo where 'Java' like demo.name; // work

但如果输入长文本则失败

SELECT * FROM demo where 'Java is my favorite programming language' like demo.name; // Fails

只需将列名放在 like 运算符的左侧,并在字符串关键字的右侧连接一个通配符:

select * from demo where name like 'Java%' ; -- or like 'Sqlite%' etc

您可以使其更通用,例如:

select * from demo where name like ? || %' ;

其中 ? 是一个绑定参数,表示用户提供的值(您也可以在传递参数之前在您的应用程序中连接通配符)。

我想你想要这样的东西:

SELECT * FROM demo WHERE yourText LIKE demo.name || '%' ;

您可以这样查询

Select * from SearchPojo where name GLOB '*' || :namestring|| '*'"

不确定我是否遇到问题但是...

你可以查询这些值(Html、Java、JQuery、Sqlite)把它们放在一个集合中,比如List,然后抓取用户的输入并检查它:

List<String> values ... // Html, Java, JQuery, Sqlite

for (String value : values) {
   if (userInput.contains(value) {
      // print
      System.out.println("1 row selected with value \"Java\");
   }
}

它支持用户输入多个选项的情况。

用通配符连接您的列:

SELECT * FROM demo where 'Java is my favorite programming language' like demo.name || '%';