2012-10-13 320 views
2

我有一個名爲category的表。SQL與大小寫比較like和「=」

在此表

我有此表中我已經添加的記錄與此值兩列1)cat_id,2。)cat_name

cat_id = 1cat_name = test

現在當我要運行選擇查詢

SELECT * FROM category WHERE cat_name = 'Test' 

該查詢返回我空的結果,因爲在數據庫中記錄字符串test並且在查詢中它是一個Test在這裏標記大寫字母的不同之處。空結果Insta我想要第一條記錄的結果。

我也想要相同的結果反之亦然小和大寫字符串。

我正在使用sqlite作爲數據庫。

回答

9

使用上層功能。

SELECT * FROM category WHERE upper(cat_name) = upper('Test') 
+0

偉大的答案的所有組合。它爲雙方的情況。 –

1

使用較低:

SELECT * FROM category WHERE LOWER(cat_name) = 'test'

將讓你測試

+0

如果我的比較字符串像這樣** LOWER(cat_name)='TesT'**會發生什麼? –

+0

不起作用。降低將字符串中的所有字符 - cat_name - 轉換爲其小寫版本。所以如果cat_name是'TesT',那麼lower(cat_name)仍然等同於'test'。但是,如果你使用我建議的路線,如果它等於'TesT,你仍然可以找到cat_name,因爲你使用小寫字符串來比較 – mcalex

6
SELECT * FROM category WHERE cat_name = 'Test' COLLATE NOCASE;