请问server 2000企业版与标准版,个人版在语法上是否有区别?

zheng_zj 2006-11-18 11:03:56
比如我用的资料书的案例是企业版的,我电脑是XP,装的是标准版,书上举例:
用_通配符表示任意一个字符:select * from sudentes where name like '国'
我在我电脑上试验时,发现没任何显示,但是用%通配符则可以.
...全文
346 25 打赏 收藏 转发到动态 举报
写回复
用AI写文章
25 条回复
切换为时间正序
请发表友善的回复…
发表回复
zheng_zj 2006-11-18
  • 打赏
  • 举报
回复
受教了,谢谢
xyxfly 2006-11-18
  • 打赏
  • 举报
回复
加上n表示unicode

使用 Unicode 数据
Unicode 标准为全球商业领域中广泛使用的大部分字符定义了一个单一编码方案。所有的计算机都用单一的 Unicode 标准 Unicode 数据中的位模式一致地翻译成字符。这保证了同一个位模式在所有的计算机上总是转换成同一个字符。数据可以随意地从一个数据库或计算机传送到另一个数据库或计算机,而不用担心接收系统是否会错误地翻译位模式。

对于用一个字节编码每个字符的数据类型,存在的问题之一就是此数据类型只能表示 256 个不同的字符。这就迫使对于不同的字母表(例如相对较小的欧洲字母表)采用多重编码规格(或者代码页)。而且也不可能处理象日文汉字或韩国文字这样具有数千个字符的字母表。

每个 Microsoft® SQL Server™ 排序规则都有一个对表示 char、varchar 和 text 值中的每个字符定义位模式进行定义的代码页。可为个别的列和字符常量指派不同的代码页。客户端计算机使用与操作系统区域设置相关联的代码页解释字符位模式。有很多种不同的代码页。一些字符出现在某些代码页上,但并不出现在其它的代码页上。某些字符在一些代码页上用一个位模式定义,而在其它的代码页上却用另一个位模式定义。当您设计必须处理不同语言的国际性系统时,为了满足不同国家/地区的语言需求,给所有的计算机挑选代码页就变得困难了。要保证每一台计算机与使用不同代码页的系统交互时都进行正确的翻译也是困难的。

Unicode 规格通过采用两个字节编码每个字符使这个问题迎刃而解。转换最通用商业语言的单一规格具有足够多的 2 字节的模式 (65,536)。因为所有的 Unicode 系统均一致地采用同样的位模式来代表所有的字符,所以当从一个系统转到另一个系统时,将不会存在未正确转换字符的问题。通过在整个系统中使用 Unicode 数据类型,可尽量减少字符转换问题。

在 Microsoft SQL Server 中,以下数据类型支持 Unicode 数据:

nchar


nvarchar


ntext


说明 这些数据类型的前缀 n 来自 SQL-92 标准中的 National(Unicode)数据类型。

nchar、nvarchar 和 ntext 的用法分别与 char、varchar 和 text 的用法一样,但在以下方面不同:

Unicode支持的字符范围更大。


存储 Unicode 字符所需要的空间更大。


nchar 和 nvarchar 列最多可以有 4,000 个字符,而不象 char 和 varchar 字符那样可以有 8,000 个字符。


Unicode 常量使用 N 开头来指定:N'A Unicode string'。


所有 Unicode 数据都使用相同的 Unicode 代码页。排序规则不控制用于 Unicode 列的代码页,仅控制比较规则和是否区分大小写等特性。
zheng_zj 2006-11-18
  • 打赏
  • 举报
回复
什么时候需要加上N,什么时候不需要?
xyxfly 2006-11-18
  • 打赏
  • 举报
回复
name
----------


(所影响的行数为 1 行)

name
----------


(所影响的行数为 1 行)

xyxfly 2006-11-18
  • 打赏
  • 举报
回复
create table students(name nvarchar(10))

insert students select '国'
union select '中国' union
select '国家'


select * from students where name like N'_'
select * from students where name like '_'
drop table students


也是可以的
zheng_zj 2006-11-18
  • 打赏
  • 举报
回复
啊,是数据类型引起的,非常感谢,
我先用的是char,不行,再用nvarchar,也不行,用varchar就行了,这是什么原因啊?
xyxfly 2006-11-18
  • 打赏
  • 举报
回复
有个name是'张'的记录 或是这个记录有空格?
xyxfly 2006-11-18
  • 打赏
  • 举报
回复
name
----------



注意你的数据类型
xyxfly 2006-11-18
  • 打赏
  • 举报
回复
create table students(name varchar(10))

insert students select '国'
union select '中国' union
select '国家'


select * from students where name like '_'
drop table students
zheng_zj 2006-11-18
  • 打赏
  • 举报
回复
没报任何错误,就是不能找到,但是表里的确是有的
zheng_zj 2006-11-18
  • 打赏
  • 举报
回复
select * from students where name like '_' --找出只有一个字符的name的student
我试了一下,有个name是'张'的记录,但是用上语句也查不出来,不知是何原因
sgucxc0 2006-11-18
  • 打赏
  • 举报
回复
把报错的消息贴出来吧
zheng_zj 2006-11-18
  • 打赏
  • 举报
回复
真是奇怪,我的电脑用select * from sudentes where name like N'_国_'还是不行,
sgucxc0 2006-11-18
  • 打赏
  • 举报
回复
通配符1. _ 匹配任意一个字符(包括空字符) 2.% 匹配任意字符

select * from students where name like '_' --找出只有一个字符的name的student

crazyflower 2006-11-18
  • 打赏
  • 举报
回复
企业版和标准版在SQL语法上没有区别。
区别在于功能上,企业版支持的功能多的多。
gc_ding 2006-11-18
  • 打赏
  • 举报
回复
可以,不过有中文字要改成这样:
select * from sudentes where name like N'_国_'
zheng_zj 2006-11-18
  • 打赏
  • 举报
回复
我可不可以查询名字为三个字,中间一个字为"国"的,如张国立;
用select * from sudentes where name like '_国_'
baoshan 2006-11-18
  • 打赏
  • 举报
回复
select * from sudentes where name like '%国'
gc_ding 2006-11-18
  • 打赏
  • 举报
回复
1.企业版与标准版,个人版在语法上没有区别

2.select * from sudentes where name like N'国'
等价于select * from sudentes where name =N '国'
表示查询name字段等于“国”的记录

3.select * from sudentes where name like N'%国%'
表示查询name字段含有“国”的记录

jxncjc001 2006-11-18
  • 打赏
  • 举报
回复
like 模糊查询的
加载更多回复(5)

34,588

社区成员

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

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