タイプとタイムスタンプはどちらも予約語であるため、クエリでは次のように角括弧で囲みます: [type]
and [timestamp]
. これらの予約語が問題の原因であるとは思えませんが、予約語がいつクエリの問題を引き起こすかを正確に予測することは難しいため、角括弧を使用してこの可能性を除外してください.
さらに、保存されたテキスト値に余分な非表示文字が含まれることがありました。格納されたテキスト値の長さをチェックして、予想よりも長いものがないかどうかを確認します。
SELECT
Len(deviceId) AS LenOfDeviceId,
Len([type]) AS LenOfType,
Len([timestamp]) AS LenOfTimestamp
FROM records;
コメントでは、保存された値にスペース (ASCII 値 32) を記載しました。私は、印刷できない/見えない他の文字を扱っていると思っていました。deviceId
格納された値の先頭または末尾に 1 つ以上の実際の空白文字がある場合、Trim()
関数はそれらを破棄します。したがって、このクエリでは、2 つの列で異なる長さの数値が得られます。
SELECT
Len(deviceId) AS LenOfDeviceId,
Len(Trim(deviceId)) AS LenOfDeviceId_NoSpaces
FROM records;
格納された値の文字列内に (先頭や末尾だけでなく) スペースを含めることTrim()
ができる場合、はそれらを削除しません。その場合、Replace()
関数を使用してすべてのスペースを破棄できます。ただし、 を使用するクエリはReplace()
、Access アプリケーション セッション内から実行する必要があることに注意してください。Java コードからは使用できません。
SELECT
Len(deviceId) AS LenOfDeviceId,
Len(Replace(deviceId, ' ', '')) AS LenOfDeviceId_NoSpaces
FROM records;
そのクエリが両方の列で同じ長さの数値を返す場合、実際のスペース文字 (ASCII 値 32) ではなく、「スペースのように見える」他のタイプの文字を扱っています。