给大家看一下我的mysql数据结构表
我只有真实用户名字的字段是中文的
CREATE TABLE oa(
email varchar(100) collate utf8_bin NOT NULL,
realname varchar(100) collate utf8_bin NOT NULL,
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
13 个解决方案
#1
你在导之间把两个库的字符集设置成一样.
以下为查看和更改SQL SERVER的字符集
至于MYSQL里面的字符集如何查询和更改就不知道了.帮顶.
以下为查看和更改SQL SERVER的字符集
use master
select * from syscharsets
1.用sp_helpsort就可以查出当前sql的排序规则,字符集就是用排序规则的前半部分来表达的。
2.用全局变量@@language可以看你当前的语言,用sp_helplanguage可以查看当前语言的详细格式
3.用sp_enumcodepages可以查看sql支持字符集,但并没有与1中的排序规则前部分对应
所以要查看sql的字符集,应该是用sp_helpsort得出的结果,
再看结果的前半部比如chinese_prc就代表简体中文的Unicode字符,
默认字符集
Alter database 数据库名称 Collate Chinese_PRC_BIN
排序
ALTER DATABASE 数据库名 COLLATE 排序规则名
至于MYSQL里面的字符集如何查询和更改就不知道了.帮顶.
#2
2005的字符集是不让修改的。
#3
--1. 为数据库指定排序规则
CREATE DATABASE db COLLATE Chinese_PRC_CI_AS
GO
ALTER DATABASE db COLLATE Chinese_PRC_BIN
GO
/*====================================*/
--2. 为表中的列指定排序规则
CREATE TABLE tb(
col1 varchar(10),
col2 varchar(10) COLLATE Chinese_PRC_CI_AS)
GO
ALTER TABLE tb ADD col3 varchar(10) COLLATE Chinese_PRC_BIN
GO
ALTER TABLE tb ALTER COLUMN col2 varchar(10) COLLATE Chinese_PRC_BIN
GO
/*====================================*/
--3. 为字符变量和参数应用排序规则
DECLARE @a varchar(10),@b varchar(10)
SELECT @a='a',@b='A'
--使用排序规则 Chinese_PRC_CI_AS
SELECT CASE WHEN @a COLLATE Chinese_PRC_CI_AS = @b THEN '@a=@b' ELSE '@a<>@b' END
--结果:@a=@b
--使用排序规则 Chinese_PRC_BIN
SELECT CASE WHEN @a COLLATE Chinese_PRC_BIN = @b THEN '@a=@b' ELSE '@a<>@b' END
--结果:@a<>@b
#4
mysql中charset为utf-8你的sql2005中表中相应字段,如果是chinese_prc_****排序规则,应该是不会乱码的。
或者把sql2005 中相应字段列类型改为nvarchar
或者把sql2005 中相应字段列类型改为nvarchar
#5
此問題我也遇到過:
從oracle數據庫表數據在導入sql2000數據庫表數據時,我用了sql link方法:
select * from openquery(ora,'select * from bom_loc')數據顯示中文是亂碼的,我在自己的機子上測試,安裝了 oacle net manager再配置連接,居然不亂碼了,顯示一切正常;建議樓主修改字符集或按照我的方法試試,sql2008查詢也通過!
從oracle數據庫表數據在導入sql2000數據庫表數據時,我用了sql link方法:
select * from openquery(ora,'select * from bom_loc')數據顯示中文是亂碼的,我在自己的機子上測試,安裝了 oacle net manager再配置連接,居然不亂碼了,顯示一切正常;建議樓主修改字符集或按照我的方法試試,sql2008查詢也通過!
#6
此問題我也遇到過:
從oracle數據庫表數據在導入sql2000數據庫表數據時,我用了sql link方法:
select * from openquery(ora,'select * from bom_loc')數據顯示中文是亂碼的,我在自己的機子上測試,安裝了 oacle net manager再配置連接,居然不亂碼了,顯示一切正常;建議樓主修改字符集或按照我的方法試試,sql2008查詢也通過!
從oracle數據庫表數據在導入sql2000數據庫表數據時,我用了sql link方法:
select * from openquery(ora,'select * from bom_loc')數據顯示中文是亂碼的,我在自己的機子上測試,安裝了 oacle net manager再配置連接,居然不亂碼了,顯示一切正常;建議樓主修改字符集或按照我的方法試試,sql2008查詢也通過!
#7
mssql里字符串的栏位改成nvarchar
#8
关注
#9
我测试看看.这几天比较忙.没有看.大家等我好消息.哈哈
#10
该成 --在最后面的 not null去掉,号
CREATE TABLE oa(
email varchar(100) collate utf8_bin NOT NULL,
realname varchar(100) collate utf8_bin NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin
[/Quote]
#11
哈哈.我已经解决了,要散分给你们咯.解决方式是odbc版本问题.我以前用的是mysql-5.0.24-win32
与odbc3.1版本的.现在改成ODBC5·1 这样转换就没有问题了.为什么是版本问题呢.因为我转换的时候
用的dts,而dts正是通过odbc驱动来转换数据的.ok.谢谢各位的热情,让我们学到更多的知识
与odbc3.1版本的.现在改成ODBC5·1 这样转换就没有问题了.为什么是版本问题呢.因为我转换的时候
用的dts,而dts正是通过odbc驱动来转换数据的.ok.谢谢各位的热情,让我们学到更多的知识
#12
楼主,有联系方式嘛?后来导的乱码问题解决了!?!!???!????我的QQ:273246353。。。也遇到同样棘手的问题
#13
我也遇到了!!!
#1
你在导之间把两个库的字符集设置成一样.
以下为查看和更改SQL SERVER的字符集
至于MYSQL里面的字符集如何查询和更改就不知道了.帮顶.
以下为查看和更改SQL SERVER的字符集
use master
select * from syscharsets
1.用sp_helpsort就可以查出当前sql的排序规则,字符集就是用排序规则的前半部分来表达的。
2.用全局变量@@language可以看你当前的语言,用sp_helplanguage可以查看当前语言的详细格式
3.用sp_enumcodepages可以查看sql支持字符集,但并没有与1中的排序规则前部分对应
所以要查看sql的字符集,应该是用sp_helpsort得出的结果,
再看结果的前半部比如chinese_prc就代表简体中文的Unicode字符,
默认字符集
Alter database 数据库名称 Collate Chinese_PRC_BIN
排序
ALTER DATABASE 数据库名 COLLATE 排序规则名
至于MYSQL里面的字符集如何查询和更改就不知道了.帮顶.
#2
2005的字符集是不让修改的。
#3
--1. 为数据库指定排序规则
CREATE DATABASE db COLLATE Chinese_PRC_CI_AS
GO
ALTER DATABASE db COLLATE Chinese_PRC_BIN
GO
/*====================================*/
--2. 为表中的列指定排序规则
CREATE TABLE tb(
col1 varchar(10),
col2 varchar(10) COLLATE Chinese_PRC_CI_AS)
GO
ALTER TABLE tb ADD col3 varchar(10) COLLATE Chinese_PRC_BIN
GO
ALTER TABLE tb ALTER COLUMN col2 varchar(10) COLLATE Chinese_PRC_BIN
GO
/*====================================*/
--3. 为字符变量和参数应用排序规则
DECLARE @a varchar(10),@b varchar(10)
SELECT @a='a',@b='A'
--使用排序规则 Chinese_PRC_CI_AS
SELECT CASE WHEN @a COLLATE Chinese_PRC_CI_AS = @b THEN '@a=@b' ELSE '@a<>@b' END
--结果:@a=@b
--使用排序规则 Chinese_PRC_BIN
SELECT CASE WHEN @a COLLATE Chinese_PRC_BIN = @b THEN '@a=@b' ELSE '@a<>@b' END
--结果:@a<>@b
#4
mysql中charset为utf-8你的sql2005中表中相应字段,如果是chinese_prc_****排序规则,应该是不会乱码的。
或者把sql2005 中相应字段列类型改为nvarchar
或者把sql2005 中相应字段列类型改为nvarchar
#5
此問題我也遇到過:
從oracle數據庫表數據在導入sql2000數據庫表數據時,我用了sql link方法:
select * from openquery(ora,'select * from bom_loc')數據顯示中文是亂碼的,我在自己的機子上測試,安裝了 oacle net manager再配置連接,居然不亂碼了,顯示一切正常;建議樓主修改字符集或按照我的方法試試,sql2008查詢也通過!
從oracle數據庫表數據在導入sql2000數據庫表數據時,我用了sql link方法:
select * from openquery(ora,'select * from bom_loc')數據顯示中文是亂碼的,我在自己的機子上測試,安裝了 oacle net manager再配置連接,居然不亂碼了,顯示一切正常;建議樓主修改字符集或按照我的方法試試,sql2008查詢也通過!
#6
此問題我也遇到過:
從oracle數據庫表數據在導入sql2000數據庫表數據時,我用了sql link方法:
select * from openquery(ora,'select * from bom_loc')數據顯示中文是亂碼的,我在自己的機子上測試,安裝了 oacle net manager再配置連接,居然不亂碼了,顯示一切正常;建議樓主修改字符集或按照我的方法試試,sql2008查詢也通過!
從oracle數據庫表數據在導入sql2000數據庫表數據時,我用了sql link方法:
select * from openquery(ora,'select * from bom_loc')數據顯示中文是亂碼的,我在自己的機子上測試,安裝了 oacle net manager再配置連接,居然不亂碼了,顯示一切正常;建議樓主修改字符集或按照我的方法試試,sql2008查詢也通過!
#7
mssql里字符串的栏位改成nvarchar
#8
关注
#9
我测试看看.这几天比较忙.没有看.大家等我好消息.哈哈
#10
该成 --在最后面的 not null去掉,号
CREATE TABLE oa(
email varchar(100) collate utf8_bin NOT NULL,
realname varchar(100) collate utf8_bin NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin
[/Quote]
#11
哈哈.我已经解决了,要散分给你们咯.解决方式是odbc版本问题.我以前用的是mysql-5.0.24-win32
与odbc3.1版本的.现在改成ODBC5·1 这样转换就没有问题了.为什么是版本问题呢.因为我转换的时候
用的dts,而dts正是通过odbc驱动来转换数据的.ok.谢谢各位的热情,让我们学到更多的知识
与odbc3.1版本的.现在改成ODBC5·1 这样转换就没有问题了.为什么是版本问题呢.因为我转换的时候
用的dts,而dts正是通过odbc驱动来转换数据的.ok.谢谢各位的热情,让我们学到更多的知识
#12
楼主,有联系方式嘛?后来导的乱码问题解决了!?!!???!????我的QQ:273246353。。。也遇到同样棘手的问题
#13
我也遇到了!!!