私は2つのカラムを持つテーブルを持っています。SQL Serverのvarcharカラムに添字の値を挿入します
ID:番号、 名:VARCHAR(50)
は、私が添字として酸素(O2)名前フィールド、2の値を挿入します。 私が挿入しているとき、それを添字値として保存することはできません。
解決方法の1つは、名前のデータ型をnvarcharに変更することです。 しかし、私はより良い解決策を探しているので、私はテーブルを変更する必要はありません。
私は2つのカラムを持つテーブルを持っています。SQL Serverのvarcharカラムに添字の値を挿入します
ID:番号、 名:VARCHAR(50)
は、私が添字として酸素(O2)名前フィールド、2の値を挿入します。 私が挿入しているとき、それを添字値として保存することはできません。
解決方法の1つは、名前のデータ型をnvarcharに変更することです。 しかし、私はより良い解決策を探しているので、私はテーブルを変更する必要はありません。
char/varcharフィールドには、ASCIIと拡張ASCIIのみが使用できると思います。 しかし、nchar/nvarcharを使用すると、任意の文字を使用できます。
列をnvarchar(50)
に変更することをお勧めします。
varchar(50)
を使用すると、表示可能な文字セットは照合によって異なります。一般に、照合によって、ソート順が意味される。 Ø
はO
と一緒にソートするか、またはZ
の後に別の文字としてソートします。これはÅ
よりも前または後であります。しかし、この照合は、基礎となる文字セット(表現可能な文字セット)とも関連しています。
select TABLE_CATALOG, TABLE_NAME, COLUMN_NAME,
DATA_TYPE, CHARACTER_SET_NAME,
COLLATION_NAME, COLLATIONPROPERTY(COLLATION_NAME, 'CodePage') as CODE_PAGE
from INFORMATION_SCHEMA.COLUMNS
where COLUMN_NAME = N'name'
とあなたの列の
CHARACTER_SET_NAME
、
COLLATION_NAME
、および
CODE_PAGE
の点に注意してください。クエリを試してみてください。あなたは何を持っていますか?
確かにそれは'O₂'
を正しく表すことができます。
あなたは、このような'O<sub>2</sub>'
、またはTeXなど'O_2'
など様なものとして、HTMLに似た構文を使用して、たとえば、いくつかの規則を選択することができます。
Unicode文字は 'nvarchar'に格納されています。例:Symbols、Hindi、Chinese charactersなど – Arshad