2014-01-09 26 views
0

我想創建一個SQL語句,它不接受給定名稱的任何書面選擇記錄與任何類型編寫的用戶名/場

select * from Mytable where username='Peter'; 

我不小心在數據庫中寫彼得正確的辦法。現在我也想選擇這個內容記錄:

PETER 
PeTER 
PeteR 
peteR 
.... 

使用ADO和Delphi XE 2和MSSQL Server Express的版本。

+0

http://technet.microsoft.com/en-us/library/ms174400.aspx – RBA

回答

-1

你可以使雙方大寫或小寫:

where UPPER(username) = 'PETER'

+0

在你的連接中有一個函數調用將是非常昂貴的。最好做一個不區分大小寫的搜索。 –

1

一種選擇,如果性能不是關鍵,是在比較前,使每個小寫字母(或大寫):

SELECT * FROM MyTable WHERE LOWER(username) = LOWER('Peter'); 
+0

像不能解決問題,並且在您的連接中調用函數將非常昂貴。最好做一個不區分大小寫的搜索。 –

+0

@BillGregg:在這個聲明中沒有JOIN;並且我編輯了這些性能影響。 –

2

SQL Server整理SQL_Latin1_General_CP1_CS_AS - 不區分大小寫的搜索。 如果數據庫的默認排序規則不區分大小寫,那麼可以明確地讓您的查詢忽略大小寫。

select * from Mytable 
where Username COLLATE SQL_Latin1_General_CP1_CS_AS= @Username COLLATE SQL_Latin1_General_CP1_CS_AS;