我正在使用jdbc从mysql数据库中选择数据。我正在执行搜索查询,
stmt.executeQuery("SELECT (NAME) FROM tablename WHERE FULLNAME LIKE '"+"a string'"");
如何执行大小写和空格不敏感的搜索?
答案 0 :(得分:4)
在查询中你可以使用函数lower()将字符串转换为小写字母或upper()将字符串转换为UPPER CASE和trim()以在开头和结尾删除多余的空格。
您的查询将如下所示
stmt.executeQuery("SELECT (NAME) FROM tablename WHERE LOWER(FULLNAME) LIKE TRIM(LOWER('"+"a string"'))");
答案 1 :(得分:1)
要解决您可以做的案件差异
SELECT (NAME) FROM tablename WHERE upper(FULLNAME) LIKE upper('"+"a string'""))
您还可以使用
删除尾随空格TRIM('"+"a string'"")
答案 2 :(得分:1)
你可以在mysql中使用UPPER(),在应用程序端使用String.toUpperCase();
例如:
stmt.executeQuery("SELECT (NAME) FROM tablename WHERE UPPER(FULLNAME) LIKE '" + a.toUpperCase() +"'");
答案 3 :(得分:1)
要替换字符串中的所有空格(TRIM不替换中间的空格),可以使用REPLACE。以下内容应该有效:
SELECT (NAME) FROM tablename
WHERE lower(replace(FULLNAME,' ','')) LIKE lower(replace(yourstring,' ',''))
这是一个完整的例子:
create table foo (col1 varchar(100))
insert into foo (col1) values ('The Dog is sick')
SELECT col1 FROM foo
WHERE lower(replace(col1,' ','')) LIKE lower(replace('the doG iss icK',' ',''))
返回:
The Dog is sick
答案 4 :(得分:1)
SELECT (NAME) FROM tablename WHERE upper(trim(FULLNAME)) LIKE upper(trim(string))
答案 5 :(得分:0)
我不确定但你可以尝试这个, SELECT用户 来自用户 WHERE UPPER(用户)= UPPER('anand');
答案 6 :(得分:-1)
在比较之前,您可以使用sql语法ucase(FULLNAME)
和ucase(a.string)
将两者转换为大写来实现敏感搜索