忽略查询中的大小写敏感性和空白
问题描述:
我正在使用jdbc从mysql数据库中选择数据。我在执行搜索查询,忽略查询中的大小写敏感性和空白
stmt.executeQuery("SELECT (NAME) FROM tablename WHERE FULLNAME LIKE '"+"a string'"");
如何执行一个空格和空格不敏感搜索?
答
查询中
你可以使用()函数下的字符串为小写或上转换()将字符串转换为大写和修剪()删除在开头和结尾过多空间。
您的查询将是这个样子
stmt.executeQuery("SELECT (NAME) FROM tablename WHERE LOWER(FULLNAME) LIKE TRIM(LOWER('"+"a string"'))");
答
Incasesensitive搜索可以通过使用SQL语法ucase(FULLNAME)
和ucase(a.string)
你都转化为大写比较
答
为了解决分歧的情况下才可以实现,你可以做
SELECT (NAME) FROM tablename WHERE upper(FULLNAME) LIKE upper('"+"a string'""))
你也可以摆脱尾随空格的使用
TRIM('"+"a string'"")
答
我不确定但您可以试试这个, SELECT user FROM users WHERE UPPER(user)= UPPER('anand');
答
你可以在MySQL中使用UPPER(),并在应用端,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))
虽然这可能工作,一个更完整的答案也应该提如何处理空白,字符集和归类。 – 2012-03-27 12:48:25
我绝对和你在一起,马特!所以我的答案不应该得到任何学分,而应该得到其他学分。 – Daxcode 2012-03-27 17:29:27
为什么我会对此产生负面影响? – Daxcode 2012-04-02 14:14:53