黑马程序员技术交流社区

标题: 奇了??SQL insert into 问题 有奖啊 [打印本页]

作者: 彭清贵    时间: 2013-2-19 01:47
标题: 奇了??SQL insert into 问题 有奖啊
我在sql 输入查询语句
create table Pesson(id int not null,Name nvarchar(max) null,Age int null,Sex char null );

insert into Pesson (id,name,age,sex)values(1,N'小米',20,N'男');
insert into Pesson (id,name,age,sex)values(1,N'小米',20,'男');

为啥"男"没有显示出来,求解,老师说汉字字符串前面加N,我加了吧,还是为NULL,没加的我也试了  还是NULL    求解脱啊





作者: 王立    时间: 2013-2-19 07:13
你用的char,汉字是两个字符  char(2)  
char(10)   可以存10个字母 ,5个汉字,如果长度不够后面留空
Nchar(10)   10个汉字   留空 固定长度的Unicode编码

create table Pesson(id int not null,Name nvarchar(max) null,Age int null,Sex char(2) null );
insert into Pesson (id,name,age,sex)values(1,'小米',20,'男');
insert into Pesson (id,name,age,sex)values(1,N'小米',20,'男');


作者: 张洪慊    时间: 2013-2-19 11:25
create table Person --Person
(
id int not null,
Name nvarchar(max) null,
Age int null,
Sex char(2) null --如果不加默认为1(char(1)),一个汉字2byte
)                    --下面会报将截断字符串或二进制数据,因为 放不下
drop table Person
insert into Person (id,Name,Age,Sex)values(1,'小米',20,N'男');
insert into Person (id,Name,Age,Sex)values(1,'小米',20,'男');
--以上加不加 N 都可以存入'男' 我用的是 Sql server 2008 R2

select * from Person
另:你可以查下 联机丛书 关于 char nvarchar  varchar 一搜就有
再给你提供个 http://www.cnblogs.com/yelaiju/archive/2010/05/29/1746826.html  我以前看的- -
作者: 黑马-杨鹏立    时间: 2013-2-19 15:37
你改下性别的char类型换做nvarchar,一般用法是不含有汉字的地方用char,含有的地方都用nvarchar,在插入值的地方用N''表示,为的就是解决乱码。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2