NVARCHAR和varchar

linguojin11 2008-12-16 08:58:12
(1)
create table test (id int,name varchar(20))
insert into test select 1,'你好吗'
select * from test where name like '%好%'
(2)
create table test (id int,name nvarchar(20))
insert into test select 1,n'你好吗'
select * from test where name like n'%好%'
--------------------------------
不管表定义的是什么格式(是varchar或者nvarchar),在查询时加N和不加N都可以查询到呢,感觉都无所谓。。。
不过有一点很奇怪,我在我们公司的服务器上查询服务器上的一个ERP系统所用的数据库其中一个表时(表里字段定义的是nvarchar格式),此时我用 n'查询条件' 时确是查不到数据。
有高手可以帮下偶吗
...全文
287 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
you_tube 2008-12-16
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 linguojin11 的回复:]
引用 6 楼 rockyvan 的回复:

不管表定义的是什么格式(是varchar或者nvarchar),在查询时加N和不加N都可以查询到呢,感觉都无所谓。。。
-----------------------------------------------------------------------------------------------------
這只能説明你存取數據的機器的語言編碼一樣。如果存取數據是不同的機器而且語言編碼不一樣,絕對就不一樣了。


请问下  你所说的语言编码是相对于操作系统的语言类型吗?

假如…
[/Quote]

会有数据,但有时会有'??'这样的字符出现
linguojin11 2008-12-16
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 rockyvan 的回复:]
不管表定义的是什么格式(是varchar或者nvarchar),在查询时加N和不加N都可以查询到呢,感觉都无所谓。。。
-----------------------------------------------------------------------------------------------------
這只能説明你存取數據的機器的語言編碼一樣。如果存取數據是不同的機器而且語言編碼不一樣,絕對就不一樣了。

[/Quote]
请问下 你所说的语言编码是相对于操作系统的语言类型吗?

假如说我要在本地查询远程电脑数据库的某表并且两台的语言编码不一样,该表的自段为nvarchar时,我在查询时的where条件中不带 N'..',这样会查不到数据吗?

水族杰纶 2008-12-16
  • 打赏
  • 举报
回复
--支持多语言那,有利于产品国际化
Kwater 2008-12-16
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 rockyvan 的回复:]
不管表定义的是什么格式(是varchar或者nvarchar),在查询时加N和不加N都可以查询到呢,感觉都无所谓。。。
-----------------------------------------------------------------------------------------------------
這只能説明你存取數據的機器的語言編碼一樣。如果存取數據是不同的機器而且語言編碼不一樣,絕對就不一樣了。

数据库其中一个表时(表里字段定义的是nvarchar格式),此时我用  n'查询条件' 时确是查不到数…
[/Quote]

UP UP UP
kelph 2008-12-16
  • 打赏
  • 举报
回复
你们公司服务器语言和你机器不同
claro 2008-12-16
  • 打赏
  • 举报
回复
帮顶
kelph 2008-12-16
  • 打赏
  • 举报
回复
因为多语言,所以要用UNICODE,用NVARCHAR,用N''
ws_hgo 2008-12-16
  • 打赏
  • 举报
回复
char,varchar,text为非unicode编码
nchar,nvarchar,ntext为unicode编码
字符串查询的时候要在
非unicode前面加上N
例如:
select * from tb where t1=N'aa'
rockyvan 2008-12-16
  • 打赏
  • 举报
回复
不管表定义的是什么格式(是varchar或者nvarchar),在查询时加N和不加N都可以查询到呢,感觉都无所谓。。。
-----------------------------------------------------------------------------------------------------
這只能説明你存取數據的機器的語言編碼一樣。如果存取數據是不同的機器而且語言編碼不一樣,絕對就不一樣了。

数据库其中一个表时(表里字段定义的是nvarchar格式),此时我用 n'查询条件' 时确是查不到数据。
------------------------------------------------------------------------------------------------------
確定你的查詢條件是正確的。
bluefangxiao 2008-12-16
  • 打赏
  • 举报
回复
1.NVARCHAR是Unicode data types, Store每个字符需要2 bytes,能store 65,536个不同的字符
VARCHAR是non-Unicode date types, Store每个字符需要1 bytes,能store256个不同的字符
使用nvarchar时要加上N,不然有些地方可能会出现‘?’
super_iven 2008-12-16
  • 打赏
  • 举报
回复
UP
dobear_0922 2008-12-16
  • 打赏
  • 举报
回复
nvarchar使用的UNICODE编码
dawugui 2008-12-16
  • 打赏
  • 举报
回复
使用 Unicode 的语言的库,需要加N
dawugui 2008-12-16
  • 打赏
  • 举报
回复
语言格式不同.只用nvarchar时,建议加上N

34,590

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧