ドキュメントによると、文字の変化またはVARCHARで指定された文字列よりも長い文字列は切り捨てる必要があります。
文字variing(n)またはcharacter(n)に値を明示的にキャストすると、長すぎる値はエラーを発生させることなくn文字に切り捨てられます。(これもSQL標準で必要です。)
しかし、私はそれを機能させることができません。現在、ドキュメントには、文字の変化に「明示的に」値をキャストする必要があると記載されているため、それが欠落している可能性があります。以下は簡単なテストテーブルです。
create table test1(
tval character varying(20));
ここで、以下はエラーで失敗します:型文字が変化するには値が長すぎます(20)
insert into test1 values
('this is a super long string that we want to see if it is really truncated');
どうすればこれを機能させることができますか?
これは単なる割り当てであるため、切り捨てられません。
create table test1(tval character varying(20));
insert into test1 values ('this is a super long string that we want to see if it is really truncated');
しかし、これは明示的なキャストであるため、そうなります:
insert into test1 values (CAST('this is a super long string that we want to see if it is really truncated' AS varchar(20)));
切り捨て動作を取得するには、明示的なキャストを使用する必要があります。率直に言って、SQL標準で指定されていないことを望みます。
これを処理するためのより良い方法は、必要なものを明示することです。
insert into test1 values (left('this is a super long string that we want to see if it is really truncated', 20));
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加