Базовый SELECT не может найти запись - PullRequest
1 голос
/ 21 октября 2011

Я, вероятно, допускаю глупую ошибку новичка, но SQL не является моей сильной стороной.

Я пытаюсь изменить простую базу данных SQLite (в SQLite Manager), но не могуделать это, пока я не выясню, почему я не могу заставить этот оператор select возвращаться.

SELECT *
FROM facts
WHERE id = -9215979828305747000

не выдал ошибку и ничего не возвратил, независимо от того, что это первая запись в таблице.Я также попробовал

SELECT *
FROM facts
WHERE CAST(facts.id AS INTEGER) = CAST('-9215979828305747000' AS INTEGER)

снова ничего.

Я вижу значение в окне просмотра, но не могу получить его в конкретном поиске.Это происходит из-за длины значения?

Ответы [ 2 ]

1 голос
/ 21 октября 2011

-9215979828305747000 больше максимального значения для Int32 (2147483647), поэтому я полагаю, что facts.id не является целым числом. Проверьте свой тип данных и CAST соответственно.

Возможно, это строка?

SELECT *
FROM facts
WHERE id = '-9215979828305747000'
0 голосов
/ 21 октября 2011

Я сделал этот тест:

CREATE TABLE "test" (
    "id" INTEGER PRIMARY KEY NOT NULL,
    "name" TEXT
)

insert into test values (1, "tttt")
insert into test values (-9215979828305747000, "OO")


select name from test where id = -9215979828305747000'

> "OO"

Так что, похоже, он работает в новой новой таблице.Проблема явно не в выборе SQL, ключе или определении таблицы.

Попробуйте получить данные во временную таблицу:

insert into table_copy values (select * from facts)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...