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

时间:2012-03-27 12:45:05

标签: java mysql jdbc

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

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

如何执行大小写和空格不敏感的搜索?

7 个答案:

答案 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)将两者转换为大写来实现敏感搜索