在我的联系表中,我?在LastName 中得到了符号。我怎样才能避免这种情况?
FirstName MiddleName LastName
Bjorn Erik N?ss
Gunn Gjos?ther
Oystein Larsen Indrev?r
Louise Tulle Pr?strud
Run Code Online (Sandbox Code Playgroud)
Pau*_*ite 12
您需要确保LastName列是 Unicode 类型,例如 nvarchar(30),并在插入/更新/合并语句中使用的任何文字字符串上使用 N 前缀。(或者,您可以使用非 Unicode 类型和支持您需要的所有字符的代码页。)
SQL Server 将无法转换的字符替换为 ? 象征。
请参阅nchar 和 nvarchar (Transact-SQL)
用字母 N 前缀 Unicode 字符串常量。如果没有 N 前缀,字符串将转换为数据库的默认代码页。此默认代码页可能无法识别某些字符。
代码页由排序规则确定。以SQL_Latin1_General_CP1251_CI_AS作为一个例子:
SELECT FH.[description]
FROM sys.fn_helpcollations() AS FH
WHERE FH.name = N'SQL_Latin1_General_CP1251_CI_AS';
Run Code Online (Sandbox Code Playgroud)
输出:
SELECT FH.[description]
FROM sys.fn_helpcollations() AS FH
WHERE FH.name = N'SQL_Latin1_General_CP1251_CI_AS';
Run Code Online (Sandbox Code Playgroud)
代码页 1251(用于该归类中的非 Unicode 数据)没有该æ字符,因此:
SELECT 'Gjøsæther' COLLATE SQL_Latin1_General_CP1251_CI_AS;
Run Code Online (Sandbox Code Playgroud)
产生:
Latin1-General, case-insensitive, accent-sensitive,
kanatype-insensitive, width-insensitive for Unicode Data
SQL Server Sort Order 106 on Code Page 1251 for non-Unicode Data
Run Code Online (Sandbox Code Playgroud)
请注意,除了?,该ø字符还被翻译为o。
这个问题没有说明实例/数据库/列正在使用哪种排序规则,但它似乎很可能是您的数据错误的排序规则。
更多一般信息:
数据类型 (Transact-SQL)
整理和 Unicode 支持
| 归档时间: |
|
| 查看次数: |
526 次 |
| 最近记录: |