我正在使用jdbc從mysql數據庫中選擇數據。我在執行搜索查詢,忽略查詢中的大小寫敏感性和空白
stmt.executeQuery("SELECT (NAME) FROM tablename WHERE FULLNAME LIKE '"+"a string'"");
如何執行一個空格和空格不敏感搜索?
我正在使用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