Запрос SQLite с использованием uuid ничего не возвращает - PullRequest
1 голос
/ 03 августа 2020

Я запрашиваю файл базы данных SQLite, используя столбец id, который является типом UNIQUEIDENTIFIER.

Две команды:

SELECT * FROM scanned_images WHERE id = cast('5D878B98-71B2-4DEE-BA43-61D11C8EA497' as uniqueidentifier)

или

SELECT * FROM scanned_images WHERE id = '5D878B98-71B2-4DEE-BA43-61D11C8EA497'

Однако обе приведенные выше команды ничего не вернули.

Я также пробовал:

SELECT * FROM scanned_images WHERE rowid = 1 

эта команда возвращает правильные данные.

enter image description here

enter image description here

введите описание изображения здесь

1 Ответ

1 голос
/ 03 августа 2020

Типа данных uniqueidentifier в SQLite отсутствует. Согласно правилам сродства типов, описанным здесь в 3.1. Определение сродства столбца , сродство столбца равно numeric. Все, что делает это выражение:

cast('5D878B98-71B2-4DEE-BA43-61D11C8EA497' as uniqueidentifier)

, возвращает 5.

Вы должны были определить тип данных столбца как TEXT, потому что вы должны рассматривать его как TEXT и записывать условие:

WHERE id = '5D878B98-71B2-4DEE-BA43-61D11C8EA497'

или:

WHERE id = '(5D878B98-71B2-4DEE-BA43-61D11C8EA497)'

если, как показано на изображении, он содержит круглые скобки.

...