Игнорировать чувствительность к регистру и пробелы в запросе - PullRequest
2 голосов
/ 27 марта 2012

Я использую JDBC для выбора данных из базы данных MySQL. Я выполняю поисковый запрос,

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

Как выполнить поиск без учета регистра и пробелов?

Ответы [ 7 ]

4 голосов
/ 27 марта 2012

внутри запроса вы можете использовать функцию lower () для преобразования строки в нижний регистр или upper () для преобразования строки в UPPER CASE и trim () для удаления лишних пробелов в начале и конце.

Ваш запрос будет выглядеть примерно так

stmt.executeQuery("SELECT (NAME) FROM tablename WHERE LOWER(FULLNAME) LIKE TRIM(LOWER('"+"a string"'))");
1 голос
/ 27 марта 2012
SELECT (NAME) FROM tablename WHERE upper(trim(FULLNAME)) LIKE upper(trim(string))
1 голос
/ 27 марта 2012

Чтобы заменить все пробелы в строке (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
1 голос
/ 27 марта 2012

вы можете использовать UPPER () в MySQL и на стороне приложения, String.toUpperCase ();

Например:

stmt.executeQuery("SELECT (NAME) FROM tablename WHERE UPPER(FULLNAME) LIKE '" + a.toUpperCase() +"'");
1 голос
/ 27 марта 2012

Чтобы обойти различия в регистре, вы можете сделать

SELECT (NAME) FROM tablename WHERE upper(FULLNAME) LIKE upper('"+"a string'""))   

, вы также можете избавиться от конечных пробелов, используя

TRIM('"+"a string'"")
0 голосов
/ 27 марта 2012

Я не уверен, но вы можете попробовать это, ВЫБЕРИТЕ пользователя ИЗ пользователей, ГДЕ ВЕРХНИЙ (пользователь) = ВЕРХНИЙ ('anand');

0 голосов
/ 27 марта 2012

Нечувствительный поиск может быть достигнут с использованием синтаксиса sql ucase(FULLNAME) и ucase(a.string), которые вы переводите в верхний регистр перед сравнением

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...