语句插入中文数据时数据库显示全是问号???

 SELECT '车速平均值'as   CARSPEED,查询出的结果是????

解决方法:

第一种办法:先选中出错的数据库→选中以后右键点击属性会弹出数据库属性 对话框→选中数据库属性对话框中的选项→把选项中的排序规则设置成:Chinese_PRC_90_CI_AS→最后点击确定即可。(注意:在选择数据库属性的时候必须确保你所修改的数据库未被使用才可以修改否则会失败的)

第二种办法:首先打开你的sql查询分析器(新建查询),然后输入以下代码执行即可:

 

ALTER DATABASE 数据库名COLLATE Chinese_PRC_90_CI_AS

解析原因:出现以上情况主要是因为数据库属性的排序规则设置不正确,在Microsoft SQL Server 2005 中,字符串的物理存储由排序规则控制。排序规则指定表示每个字符的位模式以及存储和比较字符所使用的规则。

排序规则名称由两部份构成,前半部份是指本排序规则所支持的字符集。如:

  Chinese_PRC_90_CI_AS

前半部份:指UNICODE字符集,Chinese_PRC_指针对大陆简体字UNICODE的排序规则。

排序规则的后半部份即后缀 含义:

  _BIN 二进制排序

  _CI(CS) 是否区分大小写,CI不区分,CS区分

  _AI(AS) 是否区分重音,AI不区分,AS区分   

  _KI(KS) 是否区分假名类型KI不区分,KS区分 

  _WI(WS) 是否区分宽度WI不区分,WS区分 

区分大小写:如果想让比较将大写字母和小写字母视为不等,请选择该选项。

区分重音:如果想让比较将重音和非重音字母视为不等,请选择该选项。如果选择该选项,比较还将重音不同的字母视为不等。

区分假名:如果想让比较将片假名和平假名日语音节视为不等,请选择该选项。

区分宽度:如果想让比较将半角字符和全角字符视为不等,请选择该选项

附:如果数据库正在被使用会提示错误:

   消息 5030,级别 16,状态 2,第 1 行
   无法用排他锁锁定该数据库,以执行该操作。
   消息 5072,级别 16,状态 1,第 1 行
   ALTER DATABASE 失败。无法将数据库 *** 的默认排序规则设置为 Chinese_PRC_90_CI_AS。

解决方法:

确保没有任何用户正在使用数据库,然后将数据库设置为单用户模式。

在数据库“属性”->"选项"->“限制访问”->“Single”



 


 

 

SQL Server在创建数据插入汉字后显示问号的原因通常是由于数据库、表或列的排序规则(Collation)设置不当,或者客户端连接的字符集配置不正确。以下是可能的原因及解决方案。 ### 原因分析 1. **数据库和表的排序规则(Collation)设置不当** SQL Server 使用排序规则来确定如何对字符数据进行排序和比较。如果排序规则不支持中文字符(如使用了非中文语言的排序规则),可能会导致插入中文字符无法被正确识别,从而显示问号。 2. **列的数据类型未指定为 Unicode 类型** 如果表中用于存储中文字符的列使用的是 `VARCHAR` 类型而非 `NVARCHAR` 类型,则可能无法正确存储 Unicode 字符,导致插入中文字符显示问号。 3. **客户端连接的字符集配置问题** 客户端与 SQL Server 之间的通信如果没有正确设置字符集(例如未设置为 UTF-8 或其他支持中文的编码),也可能导致插入中文字符出现乱码。 4. **应用程序代码中的字符编码设置错误** 应用程序在向数据库发送数据,如果没有正确设置字符编码(如 Java 中未正确配置 JDBC 连接字符串中的字符集),同样会导致插入中文字符出现问题。 --- ### 解决方案 #### 1. 检查并修改数据库的排序规则 确保数据库的默认排序规则支持中文字符,例如 `Chinese_PRC_90_CI_AS` 或 `Chinese_PRC_CI_AS`。可以通过以下语句查看当前数据库的排序规则: ```sql SELECT name, collation_name FROM sys.databases WHERE name = 'YourDatabaseName'; ``` 如果排序规则不正确,可以使用以下语句更改数据库的排序规则: ```sql ALTER DATABASE YourDatabaseName COLLATE Chinese_PRC_90_CI_AS; ``` 注意:更改数据库排序规则可能会影响现有数据,因此建议在操作前备份数据库[^2]。 #### 2. 修改表中列的排序规则 如果数据库的排序规则已经正确设置,但特定表或列仍然存在问题,可以单独修改表或列的排序规则。例如,修改表中某一列的排序规则: ```sql ALTER TABLE YourTableName ALTER COLUMN YourColumnName NVARCHAR(255) COLLATE Chinese_PRC_90_CI_AS; ``` 此外,确保列的数据类型为 `NVARCHAR` 而不是 `VARCHAR`,因为 `NVARCHAR` 支持 Unicode 编码,能够正确存储中文字符。 #### 3. 设置正确的客户端连接字符集 在客户端连接 SQL Server ,确保使用的驱动程序和连接字符串中指定了正确的字符集。例如,在 JDBC 连接字符串中,应包含 `characterEncoding=UTF-8` 参数: ```java jdbc:sqlserver://localhost:1433;databaseName=YourDatabaseName;user=sa;password=yourPassword;characterEncoding=UTF-8; ``` 对于其他编程语言或工具,也需要检查其文档以确保连接设置了正确的字符编码。 #### 4. 验证应用程序的字符编码设置 在应用程序代码中,确保所有涉及字符处理的部分都使用了正确的字符编码。例如,在 C# 中,确保使用 `SqlConnection` 和 `SqlCommand` ,传入的字符串是 Unicode 格式;在 Java 中,确保 `String` 对象使用 UTF-8 编码进行处理。 --- ### 示例:创建支持中文字符的数据表 以下是一个创建支持中文字符的数据表的示例: ```sql CREATE TABLE ChineseCharacters ( ID INT PRIMARY KEY IDENTITY(1,1), Name NVARCHAR(100) COLLATE Chinese_PRC_90_CI_AS ); ``` 在这个例子中,`Name` 列使用了 `NVARCHAR` 数据类型,并且明确指定了排序规则为 `Chinese_PRC_90_CI_AS`,以确保能够正确存储中文字符。 --- ### 总结 SQL Server 插入中文字符显示问号的问题通常是由排序规则设置不当、数据类型选择错误或客户端连接字符集配置不正确引起的。通过检查并调整数据库、表和列的排序规则,确保使用 `NVARCHAR` 数据类型,并验证客户端和应用程序的字符编码设置,可以有效解决这一问题。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值