zoukankan      html  css  js  c++  java
  • SQL Server Express LocalDB 存入中文产生乱码问题

    SQL语句insert数据进去,却发现所有的中文都变成了"????",只能在字符串前带上N

    例如:INSERT INTO dbo.[WorkData] ([A001] ,[A002] ) VALUES('1705150001',N'中文字')

    但是这有个问题就是,不只是insert,就连update跟select内的where若要查询中文字都要加上N才能够正常使用....

    经查,原因为数据库字符排序默认问题(默认为SQL_Latin1_General_CP1_CI_AS)

    需手工设置为正确的选项(Chinese_PRC_CS_AS)

    或者运行如下脚本:

    declare @database nvarchar(100)
    declare tmpCur cursor for
    select DB_NAME()
    open tmpCur
    fetch next from tmpCur into @database
    declare @sql nvarchar(500)
    select @sql='alter database ['+@database+'] set single_user with rollback immediate'
    exec(@sql)
    select @sql= 'alter database ['+@database+'] collate Chinese_PRC_CI_AS'
    exec(@sql)
    select @sql= 'alter database ['+@database+'] set multi_user'
    exec(@sql)
    close tmpCur
    deallocate tmpCur

    如下示例:

    --出现了The database could not be exclusively locked to perform the operation这个错误,
    --无法修改字符集为Chinese_PRC_CI_AS;所以需要先设置为单用户模式
    ALTER DATABASE LOGINDEMODB SET SINGLE_USER WITH ROLLBACK IMMEDIATE;
    ALTER DATABASE LOGINDEMODB COLLATE Chinese_PRC_CI_AS;;
    ALTER DATABASE LOGINDEMODB SET MULTI_USER;

    另外:还需要考虑数据库表名是否区分大小写问题:

    下面语句是设置SQL Server数据库是否区分大小写:(表名和数据库字段名)
    --修改数据库不区分大小写
    alter database 数据库名称 COLLATE Chinese_PRC_CI_AS
    如:alter database VueShopDB COLLATE Chinese_PRC_CI_AS
    --修改数据库区分大小写
    alter database 数据库名称  COLLATE  Chinese_PRC_CS_AS
    如:alter database VueShopDB COLLATE Chinese_PRC_CS_AS

  • 相关阅读:
    JavaScript 基本类型值-Undefined、Null、Boolean
    Git学习之路(6)- 分支操作
    Git学习之路(5)- 同步到远程仓库及多人协作问题
    setTimeout小总结
    Git学习之路(4)- 撤销操作、删除文件和恢复文件
    Git学习之路(3)-提交文件到三个区
    Git学习之路(2)-安装GIt和创建版本库
    Git学习之路(1)-Git简介
    两种常见挂载Jenkins slave节点的方法
    rabbitmq集群节点操作
  • 原文地址:https://www.cnblogs.com/chriskwok/p/12772916.html
Copyright © 2011-2022 走看看