このコマンドでSQLの更新は、SQL Server上の整数ID
UPDATE tbl SET name='Hi' WHERE id=''
作品を動作していないが、それはH2上では動作しません。
解決策はありますか? IDが整数の場合
このコマンドでSQLの更新は、SQL Server上の整数ID
UPDATE tbl SET name='Hi' WHERE id=''
作品を動作していないが、それはH2上では動作しません。
解決策はありますか? IDが整数の場合
、あなたは価値のために引用符を使用しないでください。
UPDATE TEST SET NAME='Hi' WHERE ID = 5; // not ID = '5'
多くのデータベースが引用されたバージョンを受け入れますが、SQL言語仕様によって必要とされていません。 idフィールドが 整数ですが、あなたは、idがnullの行を更新したい場合は、あなたがステートメントの下に使用する必要がある場合でも、SQL Serverの中で働いている
H2はIDが整数の場合でもID = '5'をサポートしています...これは問題ではありません。問題は、ユーザーがID = ''を使用したことです。これはMySQLと(おそらく?)Oracleではサポートされているようですが、私がテストした他のデータベース(PostgreSQL、Derby、HSQLDB)ではサポートされていません。 –
要求がデータの種類を制御しないSQLコマンドのジェネレータの結果であるため、私は満足できません。 ありがとうございます。 –
UPDATE TEST SET NAME='Hi' WHERE ID='1';
: UPDATE TEST SET NAME='Hi' WHERE ID is Null;
代わりUPDATE TEST SET NAME='Hi' WHERE ID ='';
のとidがvarcharの場合は、ステートメントを使用してIDがnullでなく、データがそこで使用できない値を更新できます。 しかし、あなたはIDフィールドのNULL値はその後、あなたはそれが数に空の文字列''
を変換することはできませんので
UPDATE TEST SET NAME='Hi' WHERE ID is Null;
+1:一部のデータベースで ''とnullを等価であると考えています(どちらにしてもかまいません) –
ハイマークは、一部のデータベースシステムではyesです。 –
要求がデータの種類を制御しないSQLコマンドのジェネレータの結果であるため、私は満足できません。 ありがとうございます。 –
H2が例外をスロー使用する必要がどこのレコードの値を更新する場合。 H2は内部でで失敗するjava.lang.Long.parseLong("")
を使用します。 SQLスクリプトの
:
Data conversion error converting [22018-161]
他のほとんどのデータベース(PostgreSQLの、Apache Derbyを、HSQLDB)と同様の例外をスロー:
drop table tbl;
create table tbl(id int primary key, name varchar(255));
insert into tbl values(1, 'Hello');
UPDATE tbl SET name='Hi' WHERE id='';
H2は、例外がスローされます。
あなたは番号を使用する必要が、またはIS NULL
などで:
UPDATE tbl SET name='Hi' WHERE id IS NULL;
または
UPDATE tbl SET name='Hi' WHERE id = 0;
は、Javaを介してSQLの更新を行っているどのようにウルテーブルスキーマ – Ghostman
の詳細を提供してください? –
@Philippe Billerotあなたの質問にもっと物質を提供してください。あなたが受信している正確なエラーメッセージは何ですか?エラーコードはありますか?どのDBMSを使用していますか? MySQLサーバー、MS SQL Server、Oracle? – bakoyaro