(당신은 더 나은 뭔가 생각할 수있는 경우에 질문 제목을 개선하시기 바랍니다.)이상한 행동
질문 :
SELECT COUNT(*)
FROM (SELECT 1 AS value UNION SELECT 2 AS value)
WHERE value <= ?
다음 SQLite는 쿼리를 살펴 나는 1
을 매개 변수로 사용하며, 은 1
을 산출하는 쿼리를으로 기대하지만 아직 2
을 산출합니다. 왜 이런 일이 생길까요?
추가 정보 :
Cursor c = db.rawQuery(
"SELECT COUNT(*) " +
" FROM (SELECT 1 AS value UNION SELECT 2 AS value) " +
" WHERE value <= ? ",
new String[] {String.valueOf(1)});
c.moveToFirst();
Log.i("", "Result: " + String.valueOf(c.getInt(0)));
그것은 힘 사실 매개 변수가 함께 할 수있다 :
이이 문제 (안드로이드)을 재현 할 수있는 최소한의 일 예이다 문자열로 전달되지만, 아, SQLite API에 매개 변수를 전달할 수있는 다른 방법이 없으므로 여기서는 "잘못된"것은 아니며 ap 값을 변환하는 것은 SQLite의 작업입니다 독점적으로. 내가 관찰 한 쿼리의 매개 변수가없는 버전 (이 또는 문제에 대한 관련되지 않을 수도 있습니다)를 사용할 때 다음
SELECT COUNT(*)
FROM (SELECT 1 AS value UNION SELECT 2 AS value)
WHERE value <= 1 -- yields 1
SELECT COUNT(*)
FROM (SELECT 1 AS value UNION SELECT 2 AS value)
WHERE value <= '1' -- yields 2
이 적합합니다. char '1'= 49 – njzk2
당신은 SELECT '1'과 SELECT '2'를 사용할 수 있습니다 – njzk2