在表格中插入特殊字符

kev*_*ski 3 sql-server collation insert t-sql unicode

我有几个字符被替换为?. 你如何保持表格中的原始字符?我要插入的字符是?; 带腰带的拉丁文小写字母 L。是否可以将此字符添加到表中?

Sol*_*zky 5

只要满足以下任一条件,就可以添加该字符:

  1. 目标列是NCHAR/ NVARCHAR/ XMLNTEXT也适用,但由于SQL Server 2005中,所以不要使用它释放已被弃用)

    或者

  2. 目标列是CHAR/VARCHAR 并且该的排序规则使用支持相关字符的代码页。

因此,请确保执行以下操作:

  1. 为字符串添加前缀N(如果当前数据库的默认排序规则使用支持该字符的代码页,则不需要,但有助于消除数据库的默认排序规则成为可能导致此问题的因素——原因是如果当前数据库的默认排序规则使用不支持该字符的代码页,那么它将被转换为“最佳匹配”匹配,或者?如果找不到最佳匹配匹配,而它被保存在变量或字符串文字中) .
  2. 同样,如果这是通过参数进入存储过程或参数化查询批处理,并且参数类型为CHARor VARCHAR,则当前数据库的默认排序规则不使用支持该字符的代码页,因此切换到使用NVARCHAR/NCHAR作为参数数据类型。
  3. 如果目标列是VARCHAR/CHAR,则确保列的排序规则使用支持该字符的代码页。
  4. 如果目标列是VARCHAR/CHAR并且您找不到使用支持相关字符的代码页的排序规则,那么您需要将该列转换为NVARCHAR/NCHAR以便它可以存储任何字符。   (这对 OP 有用)

有关使用 Collat​​ions 的更多信息,请访问:Collat​​ions.info