1


0

数字のみを含む文字列を格納するSQLite3

SQLite3でこのような非常に単純なクエリを実行する必要があります。

INSERT OR REPLACE INTO tblPhoneList(Phone, PeopleId, StorageType) VALUES('+91912345789', '1','1');

しかし、私が何をするにしても、番号は91912345789として保存されます。 +プレフィックスは無視されます。 フィールド「Phone」は「String」です。 なぜ+プレフィックスを無視するのですか? これを回避する方法はありますか?

P.S. このコードはAndroid内で実行されます

編集:これはテーブルのスキーマです

CREATE TABLE tblPhoneList(Phone STRING PRIMARY KEY ON CONFLICT REPLACE, StorageT
ype INTEGER, PeopleId INTEGER, FOREIGN KEY(PeopleId) references tblPeople(id));

5 Answer


9


http://www.sqlite.org/datatype3.html#affname [マニュアル]の< UPDATE >:

_ 「STRING」の宣言されたタイプは、TEXTではなくNUMERICのアフィニティを持っています _

そのため、この列のタイプを「TEXT」に変更してください。完了です。 更新終了>

Phone`カラムのタイプは何ですか( PRAGMA table_info(tblPhoneList) `を試してください)。 「TEXT」(または「BLOB」)の場合、問題はないはずです。ここで試してみてください。 「INTEGER」または「REAL」の場合は、「TEXT」に変換する必要があります。「INTEGER」または「REAL」列に「+」文字列を格納することはできません。

詳細については、http://www.sqlite.org/datatype3.html [SQLiteバージョン3のデータ型]を参照してください。


2


テキストです! SQLiteは、整数、テキスト、実数、およびBLOBのみをサポートします。


1


DBのPhoneフィールドを文字列にすることはできません。確認することをお勧めします。TEXTまたはVARCHARが機能する場合があります。 がんばろう!


0


これを試して:

INSERT OR REPLACE INTO tblPhoneList(Phone, PeopleId, StorageType) VALUES('\+91912345789', '1','1');


0


お返事ありがとうございます。 String`型(はい、String型はサポートされています)を Varchar(32) `に変更すると、このエラーは魔法のように消えます。 ここでは、「String」型のサポートが不十分なようです。