JOBCODEとして定義されたフィールドを持つ行を挿入していvarchar(50)ます。そのフィールドの文字列が 20 文字を超えると、文字列が切り捨てられるという SQL Server の警告からエラーが発生します。
これは Unicode ワイド文字に関係しているのではないかと思いますが、25 文字はパスすると思いました。
誰かが前にこのようなものを見たことがありますか? 私は何が欠けていますか?
JOBCODEとして定義されたフィールドを持つ行を挿入していvarchar(50)ます。そのフィールドの文字列が 20 文字を超えると、文字列が切り捨てられるという SQL Server の警告からエラーが発生します。
これは Unicode ワイド文字に関係しているのではないかと思いますが、25 文字はパスすると思いました。
誰かが前にこのようなものを見たことがありますか? 私は何が欠けていますか?
ここには他に何か問題があると思います。
VARCHAR(50)エンコーディングに関係なく、50 文字にする必要があります
例として
CREATE TABLE AnsiString
(
JobCode VARCHAR(20), -- ANSI with codepage
JobCodeUnicode NVARCHAR(20) -- Unicode
)
両方の列に 20 個の Unicode 文字を挿入する
INSERT INTO AnsiString(JobCode, JobCodeUnicode) VALUES ('葉2葉4葉6葉8葉0葉2葉4葉6葉8叶0',
N'葉2葉4葉6葉8葉0葉2葉4葉6葉8叶0')
select * from ansistring
戻り値
?2?4?6?8?0?2?4?6?8?0 葉2葉4葉6葉8葉0葉2葉4葉6葉8叶0
予想通り、 ?ANSI にマップされていない文字に対して挿入されますが、どちらの方法でも 20 文字を挿入できます。
テーブルにトリガーがありますか?それは完全に別の列でしょうか?データ アクセス レイヤーが何らかの方法で Unicode 文字列を別のもの (byte[] など) に拡張している可能性はありますか?