Java 忽略查询中的区分大小写和空格

Java 忽略查询中的区分大小写和空格,java,mysql,jdbc,Java,Mysql,Jdbc,我使用jdbc从mysql数据库中选择数据。我正在执行搜索查询 stmt.executeQuery("SELECT (NAME) FROM tablename WHERE FULLNAME LIKE '"+"a string'""); 如何执行不区分大小写和空格的搜索?可以通过使用sql语法ucase(全名)和ucase(a.string)来实现区分大小写的搜索。在比较之前,您将两者转换为大写 SELECT (NAME) FROM tablename WHERE upper(FULLNAME)

我使用jdbc从mysql数据库中选择数据。我正在执行搜索查询

stmt.executeQuery("SELECT (NAME) FROM tablename WHERE FULLNAME LIKE '"+"a string'"");

如何执行不区分大小写和空格的搜索?

可以通过使用sql语法
ucase(全名)
ucase(a.string)
来实现区分大小写的搜索。在比较之前,您将两者转换为大写

SELECT (NAME) FROM tablename WHERE upper(FULLNAME) LIKE upper('"+"a string'""))   
您还可以使用

TRIM('"+"a string'"")

我不确定但你可以试试这个, 选择用户 来自用户
其中UPPER(用户)=UPPER('anand')

在查询中,可以使用函数lower()将字符串转换为小写,或使用函数upper()将字符串转换为大写,使用函数trim()删除开头和结尾的多余空格

您的查询将如下所示

stmt.executeQuery("SELECT (NAME) FROM tablename WHERE LOWER(FULLNAME) LIKE TRIM(LOWER('"+"a string"'))");
您可以在mysql中使用,在应用程序端可以使用String.toUpperCase()

例如:

stmt.executeQuery("SELECT (NAME) FROM tablename WHERE UPPER(FULLNAME) LIKE '" + a.toUpperCase() +"'");

要替换字符串中的所有空格(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

虽然这可能有效,但更完整的答案还应该提到如何处理空白、字符集和排序规则。我完全同意你,马特!所以我的答案不应该得到任何学分,而应该是其他的。
SELECT (NAME) FROM tablename WHERE upper(trim(FULLNAME)) LIKE upper(trim(string))