SQL乱码的问题
在SQL Server Unicode字符串常量需要前缀N
当在SQL
SERVER里边处理字符串常量的时候你必须在常量之前放一个大写的N,就像SQL
SERVER连机文档标题为"采用Unicode数据"所说明的那样.N前缀象征着在SQL-92
标准的国家语言,并且必须是大写字母.如果你在Unicode字符串常量前边不放一个N的话,SQL Server
在用它只前会把它转化成当前数据库的非Unicode代码页.
这个符号必须用来提供和现存的程序的向后兼容.举例,
"SELECT 'Hello'" 一定要返回一个非Unicode 字符串因为许多的程序依赖于SQL Server
6.5,而它是不支持Unicode数据.而新的语法"SELECT N'Hello'" 被添加从而语序从SQL Server 7.0和去SQL
Server 7.0.传递Unicode 字符串.
任何时候当你向SQL Server 传递Unicode
数据的时候你必须在它的前边放上N.如果你的程序支持Unicode而且向SQL Server 7.0
传递了未加N的字符串常量,你可能会遇到字符串数据的损失.当 SQL Server 把一个未加N的Unicode字符串转化成SQL
Server数据库的代码页,Unicode字符串里边的任何字符,并且在SQL Server代码页里边不存在的字符将会损失.
如果你的程序没有发送向SQL Server 发送SQL Server 数据而且客户端的ANSI代码页符合SQL Server
代码页,就没有必要加上N,并且你也不会遇到数据的损失.但是, SQL Server 7.0
允许你在安装的时候挑选一种不同于排序次序的Unicode校勘.在某些情况下这可能会导致涉及到有N前缀的字符串和没有N前缀的字符串出现不同的结果.举例,当你安装SQL
Server 7.0的时候,你选择了二进制排序规则(排序规则在比较非Unicode
字符串是用),而且选择了常规Unicode作为Unicode校勘(校勘在比较Unicode字符串时用).比较两个非Unicode字符串表达式 ("ABC"
= "abc") 会返回失败因为在二进制排序规则里边大写字母A和小写字母a是不相等的.相反的,表达式(N'ABC' = N'abc')  
相关文档:
sql之left join、right join、inner join的区别
left join(左联接) 返回包括左表中的所有记录和右表中联结字段相等的记录
right join(右联接) 返回包括右表中的所有记录和左表中联结字段相等的记录
inner join(等值连接) 只返回两个表中联结字段相等的行
举例如下:
-------------------------------------------- ......
数据库 有两张表
表1: student
表2:chinese
现在要分别列出 每所学校 语文成绩最高的 学生信息
SQL :
SELECT *
from student
LEFT JOIN chinese ON student.no = chinese.no
WHERE chinese.chengji
IN (
SELECT max( chinese.chengji )
from student
LEFT JOIN chinese ON student.no = chinese.no
GROU ......
怎样从数据库里随机读取
一条记录,
SELECT TOP 1 * from dbo.Customers ORDER BY NEWID()
这样,如果是随机10
条,100条。。。。
SELECT TOP 10 * from dbo.Customers ORDER BY NEWID()
很简单吧。
不过top后面数字越大,运行速度越慢。不推荐数据字太大。
以后代码在SQL2000 ......
SOURCE: CLICK HERE
本文讲述SQL Server、Oracle、MySQL查出值为NULL的替换。
在SQL Server Oracle MySQL当数据库中查出某值为NULL怎么办?
1、MSSQL: ISNULL()
语法
ISNULL ( check_expression , replacement_value )
参数
check_expression
将被检查是否为 NULL的表达式。check_expression 可以是任何类型的。
re ......