2017-03-15 40 views
0

我想通過使用它的GUID返回我的sqlite表的特定行。使用sql.js的SELECT GUID沒有返回結果

表「參考」被定義爲

CREATE TABLE "Reference" (`ID` GUID, [...], PRIMARY KEY(`ID`)) 

當通過SELECT ID FROM Reference返回所有行我得到的GUID值作爲逗號分隔小數(加上一個數字(可能是零)丟失,前一最後一個塊),例如我的一個結果GUID是20,129,73,9,133,47,79,7,80,130,247,254,95,40,35,29

現在,如果我嘗試使用此GUID選擇整行,我不會得到任何結果。

實施例的查詢:

SELECT * FROM Reference WHERE ID = '20,129,73,9,133,47,79,7,80,130,247,254,95,40,35,29' 

此外,我已經嘗試過將所述小數爲十六進制或ASCII值,並用它們代替 - 沒有成功雖然。

+1

什麼'SELECT TYPEOF(ID)FROM Reference'給你? – dan04

+0

它返回''blob''。 –

+0

你的迴應激勵我玩弄其他獲得單元格價值的方式。所以我試着從Reference中''選擇hex(ID),它返回相應的十六進制值。此外,我可以用''SELECT * FROM引用WHERE hex(ID)='14814909852F4F075082F7FE5F28231D''選擇單個行。但是,我仍然對「非十六進制」方式感興趣,以檢索行。 –

回答

1

它看起來像GUID存儲爲16字節blob,並且JavaScript代碼將它們轉換爲表示字節的整數數組。但SQLite用於blob文字的語法是X前綴十六進制字符串,如下所示:

SELECT * FROM Reference WHERE ID = X'14814909852F4F075082F7FE5F28231D' 
+0

我曾嘗試使用x前綴字符串選擇一行並得到''錯誤:無法識別的標記:[...]''。看起來我使用了格式不正確的GUID /十六進制值。感謝您指出了這一點! –