SQL Server 2008 データベースに ( collation を使用して) インポートされたコンテンツがありSQL_Latin1_General_CP1_CI_AS
、列に UNICODE NULLS が含まれてnvarchar(128)
います。
その影響は、PDF レポートやその他の操作でコンテンツをエクスポートしようとすると、Java ライブラリが爆発することです。
さまざまなテーブルや列の値を見つけて変更しようとしています。'u s e r n a m e'
一部のスタッフから、問題のある値はではなく のように見えると言われました'username'
。
これらの問題のある UNICODE NULLS を見つけようとして、次の SQL を実行しました。
SELECT name
FROM users
WHERE name LIKE '%[^ -~]%' COLLATE Latin1_General_BIN
次のセットが返されます。
M
M
M
N
S
S
S
S
ÿþA
これらの 1 文字の値の後に UNICODE NULLS が続く可能性があると思いますが、確かなことはわかりません。最後のものも確かに疑わしいように見えます。
CONVERT
文字列内の UNICODE NULLS を見つけるために、16 進値 -- 0x00 を使用する方法はありnvarchar
ますか?
編集#1:
select name, CAST(RIGHT(name,1) AS varbinary(128)) AS RIGHTER_1,
from users
where id=1
returns:
B 0x4200
それで、その文字「B」は少しおかしいです。ここには実際に UNICODE NULLS があり、ライブラリは UNICODE を処理するように設計されていません。それらは、LATIN UTF8 文字で堅実です。