2013-05-01 97 views
0

我有一個在SQLite中有幾列的表。我有兩列需要用來查詢此表(代碼,說明)。這兩個有COLLATE NOCASE創建表時,如下圖所示:SQLite查詢區分大小寫

CREATE TABLE [AuditEvent] (
    "Code"  char(4) NOT NULL COLLATE NOCASE, 
    "Description"  nvarchar(255) NOT NULL COLLATE NOCASE, 
    "AuditEventPK"  guid NOT NULL, 
    PRIMARY KEY ([Code]) 
); 

當我使用的代碼,我得到查詢表沒有結果

select * from auditevent where code = 'add' -- does not return any value 

select * from auditevent where description = 'add' -- returns the right record. 

然而,當我使用說明colomun查詢表,我得到結果。

在某些情況下,我必須使用CODE,但它不返回任何內容。任何想法??

+1

'Code'設置爲'char(4)'所以它會是''add''和尾部空格。 – Silvermind 2013-05-01 07:02:40

+1

謝謝Silvermind,工作,但是這意味着什麼時候我有char(x)我需要用空格來定位它? – 2013-05-01 07:04:07

+1

是的,因爲'varchar'是因爲它的名字已經意味着長度是可變的,而'char'不是。 'char'總是固定的大小。如果您沒有提供足夠的字符,該值將在右側填充空格。 – Silvermind 2013-05-01 07:06:24

回答

2

正如Silvermind所解釋的那樣,我似乎需要製作CODE類型的varchar列,而不是char。謝謝Silvermind。

+0

這將是很好,如果你將信息添加到您的答案;) – Silvermind 2013-05-01 07:13:28

+0

此外,我找不到'SqLite',但它的行爲很普遍。有關Oracle的其他信息:[CHAR數據類型](http://docs.oracle.com/cd/B10501_01/server.920/a96524/c13datyp.htm#1961) – Silvermind 2013-05-01 07:18:00