我想創建一個SQL語句,它不接受給定名稱的任何書面選擇記錄與任何類型編寫的用戶名/場
select * from Mytable where username='Peter';
我不小心在數據庫中寫彼得正確的辦法。現在我也想選擇這個內容記錄:
PETER
PeTER
PeteR
peteR
....
使用ADO和Delphi XE 2和MSSQL Server Express的版本。
我想創建一個SQL語句,它不接受給定名稱的任何書面選擇記錄與任何類型編寫的用戶名/場
select * from Mytable where username='Peter';
我不小心在數據庫中寫彼得正確的辦法。現在我也想選擇這個內容記錄:
PETER
PeTER
PeteR
peteR
....
使用ADO和Delphi XE 2和MSSQL Server Express的版本。
你可以使雙方大寫或小寫:
where UPPER(username) = 'PETER'
在你的連接中有一個函數調用將是非常昂貴的。最好做一個不區分大小寫的搜索。 –
一種選擇,如果性能不是關鍵,是在比較前,使每個小寫字母(或大寫):
SELECT * FROM MyTable WHERE LOWER(username) = LOWER('Peter');
像不能解決問題,並且在您的連接中調用函數將非常昂貴。最好做一個不區分大小寫的搜索。 –
@BillGregg:在這個聲明中沒有JOIN;並且我編輯了這些性能影響。 –
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;
http://technet.microsoft.com/en-us/library/ms174400.aspx – RBA