予約語タイムスタンプをフィールド名として使用する(Firebird 2.5)
-
05-07-2019 - |
質問
既存のアプリケーションのデータレイヤーを拡張して、MSSQLとSQLiteに加えてFirebird 2.5で動作するようにしましたが、障害にぶつかりました。
TimeStamp型のデータ/時刻を保存するTimeStampというフィールドがあります。これは、型がdatetimeであるMSSQLおよびSQLiteで正常に機能しますが、Firebirdでは機能しません。次のSQL:
SELECT SysTrnId,'TimeStamp' from "TRANSACTIONS"
一見機能しますが、TimeStampフィールドはfieldname" CONSTANT"として返されます。内容は「タイムスタンプ」というテキストです
Firebirdでこれを行うことは可能ですか、それともフィールドの名前を変更し、他のデータレイヤーのコードを変更する必要があります。
解決
firebirdエスケープ文字は、二重引用符"
です。 firebirdでは、二重引用符でエスケープする必要があるフィールドがある場合、大文字と小文字が区別されることに注意してください。そのため、フィールドを TimeStamp
として宣言した場合、 select" TIMESTAMP" ...
はフィールドが見つかりませんというエラーで失敗します。
他のヒント
それが機能するかどうかはわかりませんが、" TimeStamp"を二重引用符で囲みましたか? 通常、一重引用符は定数文字列を示します。
よろしく
K
所属していません StackOverflow