??????? ' ???????? ' ?? ??????? ?? ??? SQL Server 7.0 ?? SQL Server ?? ??? ?? ????????? ??? ????? ???? ???????? ?? ??? ????? ???? ??? ????? ??

???? ?????? ???? ??????
???? ID: 271566 - ?? ???????? ?? ?????? ??? ?? ?? ???? ???? ???? ??.
??? ?? ??????? ???? | ??? ?? ??????? ????

?????

SQL Server 2000 ??????? ?? ????? ????????? ?? ????? ?? SQL ?????? ????? ?? ????? ' ???????? ' ?? ??????? ?? ??? ????? ???? ?? ??? ??????? ?????? ?? ??? ???? ?? ?????? ?? ???????? ?? ??????? ?? ???? ??? ???? ?? ??? ?? ????? ???? ?????? ???????? ??????? ????? ?? ???? ????? ????????? SQL ????? ???

SQL ????? ??????? 7.0 ???, ?? ????, ?? ?? ??? ?????? ???? ????? ?? ??? ?? ????? ?????? ?? ????? ???? ?? ?? ?? ???????, ????? ?? ???? ?????? ?? ??? ?? ?????? ???? ????? ????? ????, ????? ???? ??????, ?????, ?? literal ???, ?? latter ????? ????? ?? ???? ?????? ??? ?????? ?? ???? ??? (?? ?? ???????? ????? ??)? ?? ??????? ?????? ??????? ??? ???? ?? ??? ?? ?? ???? ??, ???? ???????? ????????, ?? ???? ?????????

SQL Server 2000 ???, ?? ?? ?? true. ?? ???????? ???? ?????? ?????? ?? ??????, ?? ??? ??? ??? ?? ?? ???? ?? ???? ????? ??? ??? ?? ?????? ??? ???? ?? literal ????? ???? ???? ?? ????????? ??? ????? ???????? ?? ?????? ???? ??? ?? ??? ???? ??? ?? ????? (?? ???? ????? ???????) ?? ?????, ?????? ???? ?? ???? ??? ????????, ?????? ????????????? ?????? ?? ???? ?? ????, ??????? ?? ???????? ?? ???? ??. ???? ????, ?? ???????? ?? ???? ??? ???? impacted ??????????

???SQL ????? 2005 ?? ????????? ?? ??? ?? ??????? ????? ?????? ?????????? ???? ??????? ???? ?? ??? ????? ????? ???? Varchar/nvarchar ???????? ?? ?????, ?? ???? ??? ???? ?? ??? ???? ???????? SQL ????? 2005 ?? ??? ?? ????????? ?? ???? ????? ???????, Microsoft ??? ?? ???? ????? ???? ?? joins ????? ???? ??? ?? ??? ????? ?? ???? ?????? ?????? ?? ???

????? ?????????

?????? ?? ??????? ?? ??? ????????? ?????? ???? ?? SQL ????? ??? ?????, ??? ???????? ?????? ???????? ?? ??? ?? ???? ?? ????????? ?? ?????? semantics ?? ??????? ??? ?? SQL Server 2000 ?? ??? ????? ?? ???? ??? ?? ??? ???? ??? SQL ????? ?? ???? ?? ????????? ?? ??? ??? ??? ??? ??????? ?? ???:
  • ' ???????? ' (??? ?????? ??? ???? ?? ???????? ?? ?? ?????? ??? ?? ??. ???? ????? ?? ???? ?????? ??????)?

    -??-

  • 70 ?? ????? ?? ?? ?? ??????? ?????? ???? ??? sp_dbcmptlevel.
?????? ???? ???? ?? ???????????? ?? ??? ??? ???? ???? ????? ?????? smooth ???? ?? ????????? ?? ?? ?????? ?? ?????? ?? ??? ??????? ???? ???? ???????? ?? ????? ?? ?? ????? ?? ???? ??????? ???? ?? ??? ???????? ????? ?????? ???? ?? CAST ???????? ?? ????? ???? ??? ??? ?????? cast ?? ?????? ??, ???

??? ???? ??????????? ?? ??? ????? ?? ??? ????? ???????? seeks ?? ?? ????? ??????????? ?? ?????? ????? ?? ????? ????? ???? CPU ???, ???????? ??? ?? i/o ?????? ???? ?? ???? ?? ?? ????????? ?? ??????? ?? ???????? ???? ?? ??? ???? ??? ?? evidence. Microsoft ?????? ?? ?????? ??? ?????? casts ????? ???? ???

??? ?? ??????? ???? ?????? ?? ??? ???? ???? ???? ??? ??? ???? ???? ?? ????? ?????? ?? ??? (equality, inequality, ??, ???? ?? ???) ??? ??, ?? BETWEEN.

???? ???????

SQL Server 2000 ??? ??????? ???????? ?? ????? ??? ????? ?? ' ???????? ' ?? ????? ??? ?? ???????? ???????? ?? ????? ????????? ??? compared ?? ??? ???, ???? ??????:
  • ?????? ??????
  • ?????? ???????? ???????, ??????????? ???, ?? ????????
  • ?????? ??????

?????? ??????

?? ???????? ?? ????? ????:
create table T1 (col1 int NOT NULL)
go
insert T1 values (1)
insert T1 values (2)
insert T1 values (3)
go
??? ?? ?????????? ?????? SQL ????? ?? ??????? 7.0 (?? ?????) ????? ?? SQL Server 2000 ?? ??????? ?????? ???? ??? ???? ?? ??? 70 ?? ???, ?? ??????? ????? ??????:
select * from T1 where col1=2.3

col1        
----------- 
2

(1 row(s) affected)
??? ?? ???????? ?? ????? ???? SQL Server 2000 ???? ?????? ????? ?????? ???? (80), ???? ????? ?????? ??????? ???? ??:
col1        
----------- 

(0 row(s) affected)
???? ?????? ???, 2.3 ??? ?????? ?? ???? ??? ?? int ??? (2 ???????????? yielding), ?? ?????? ?? ???????? ?? ??? ??? ".. .where col1 = 2," ' ???????? ' ????? ?? ??? ?????? ??? ???? ???, ??????? ?? ?????? ?? ??? ?? ????? ???? ???? ?????

????? ?????? ???, 2.3 ???????? ?? ???? ?????? ????????? ??? ???? ?? ?? ???????? ?????? ?? ??? ??? ?????? ??? ?? ??? ??? ????? ???? ???? ?? ????? ?? int. "Convert(decimal(2,1) ?? ??? ???, ?????? ?????, ?????????? ???? ?? col1) = 2.3 "?? ????????? ???? ??? ?? ???? ??? ?? ????? ??? ?? ??? ??? ??????? ???? ?? ??? SQL Server 2000 ????? ??????? ??, ?? ????????? ?????? ?? ??? ???:
select * from T1 where col1=convert(int,2.3)
?? ?? ????????? ?? ?? ???? ???? ?????? ?? ??? ???? ???? ??? ?????? ?? ???, ?? ??? ?? ????? ????? Char ???? ?????? ?? ??????? ????? ??? ?????? ??????? ?? ???? ?? SQL Server 7.0 ?? SQL Server 2000 ???

?????? ???????? ???????, ??????????? ??? ?? ????????

????, ??? ????? ??? ????????? ???? ?? ???? ?? ??? ?????? ??? ?????? ?? ?????? ??? ???? ???? ?????? ???? ?? ???? ?? ????? ???? ?? ???, ???? types ?? ?????? ?? ?? ?? predicate ?? ??? ??? ?????? ???? ???? "<column> = <literal>"?? ???? ?? ??? ???"..<(other_data_type>, .convert <column)>= <literal>"?? ??? ??? ??????? ?? ??? ????? ?? ???????? ???????????? ????????? ?? ???? ??.</literal> </column)> </(other_data_type> </literal> </column>

?? ???????? ?? ????? ????:
create table T3 (col1 char(10) NOT NULL)
go
insert T3 values ('a')
insert T3 values ('b')
insert T3 values ('c')
go
create clustered index CIT3 on T3(col1)
?????????? ?????? SQL ????? ??????? 7.0 ?? SQL Server 2000 ?? ??? 70 ??????? ?????? ???? ???? ??????????? ?? ????? ?? ????? ???? ?? ?? ??? ????? ??????? ???:
select * from T3 where col1=N'a'

  |--Clustered Index Seek(OBJECT:([Northwind].[dbo].[T3].[CIT3]), SEEK:([T3].[col1]=Convert([@1])) ORDERED FORWARD)
?????? ???? ?? ??????? 80, ??????????? SQL Server 2000 ?? ?????? ???? ?? ?? ?????, ?? i/o ???? ?????? ???, ?????? CPU ?????, ?? ????? ????
|--Clustered Index Scan(OBJECT:([Northwind].[dbo].[T3].[CIT3]), WHERE:(Convert([T3].[col1])=[@1]))
???? ???????? ?? ????? ????:
create table T1 
(col1 int NOT NULL) 
go 
insert T1 values (1) 
insert T1 values (2) 
insert T1 values (3) 
go 
create clustered index clustind on T1(col1)  
?????????? ?????? SQL Server 7.0 ?? SQL Server 2000 70 ??????? ?????? ???? ?? ??? ???? ?????? ???? ?? ???? ?? ?? ?????? ??????
Select * from T1 where col1 = 1
 
|--Clustered Index Seek(OBJECT:([master].[dbo].[T1].[clustind]), SEEK:([T1].[col1]=[@1]) ORDERED) 
?????? ???? ?? ??????? 80, SQL Server 2000 ??????? 1 ?? ??? ??? ?? ?? ???? ?????? ?? ??? ?? Col1 ?????? ?????, ?? ???? ?? ??? ?????? ?? ???? ??? ?? int.

Assumed ???? ?????? ?? ??????? 1 ?? tinyint. ' tinyint ???? ?????? ??????? ???? ?????? ?????? ??? ?? ???????? ???????

?? ?? ?????? ???? ?? ??? ?? literal ?? ????? ?? ???? ?????? ??? ?????? ???? ?? ??? ?? ???? ??????? ??? ????
Select * from T1 where col1 = 1
 
|--Clustered Index Seek(OBJECT:([pubs].[dbo].[T1].[clustind]), SEEK:([T1].[col1]=Convert([@1])) ORDERED FORWARD)

?????????? ???? ???????? ?? ???, equality ???????? ???? ??, ?? ????? ???? ?? ???? ??? ?????? ??? ?? ??? ??? ????? ???????? ?? (?? ?????? ????) ???????? ?? ???? ?? ????????? consequence ?? ??? ???? ?? ???????? ??????? ?? ??????? ??????? ?? ????? disallowing ????????:
create table T4 (col1 int NOT NULL, col2 int NOT NULL)

insert T4 values (1,1)
insert T4 values (1,2)
insert T4 values (1,3)

create clustered index CIT4 on T4(col1, col2)
??? ??????????? ??? ?? ??? ????? ??????? ????? ?????? ?? ??? yields ?? ??????? ??:
select * from T4 where col1=1.1 and col2=2

|--Clustered Index Seek(OBJECT:([Northwind].[dbo].[T4].[CIT4]),
SEEK:([T4].[col1]=Convert([@1]) AND [T4].[col2]=Convert([@2])) ORDERED FORWARD)
SQL Server 2000 ?? ??? ?? 80 ?????? ???? ?? ???, ????? ????? ???? ?? ??? ??????????? ?????? ?????? ???? ??????? loops ?????? ?? ???? ??? ???????? ???? ????? ????? ?? ??? ???? ????????? ?????? ?? ??? ???????? ?? ???? (????? ????? ?? ?? ????? ?????? ???? ????.)
|--Clustered Index Seek(OBJECT:([Northwind].[dbo].[T4].[CIT4]),
SEEK:([T4].[col1] > [Expr1004] AND [T4].[col1] < [Expr1005]),
WHERE:([T4].[col2]=Convert([@2]) AND Convert([T4].[col1])=Convert([@1]))
ORDERED FORWARD)

?????? ??????

?? ????? ??????? ?? ?????? ???? ?? ??? ????? ?? ?????? ?? ???? ?? ????? ????????? ??? ????? ?? ???????? ?? ????? ????:
create table T5 (col1 tinyint NOT NULL)
go
insert T5 values (1)
insert T5 values (2)
go
????? ?????????? ?????? ????? ???, ?? ?????? ????? ?? ???? ???? ?? ??????? ??????? SQL Server ???????? 300 ??? ?????? ???? ?? ?????? ?? tinyint ???:
select * from T5 where col1= 300
Result:
Server: Msg 220, Level 16, State 2, Line 1
Arithmetic overflow error for data type tinyint, value = 300.
SQL Server 2000 (??? ?????? ???? 80 ???), ?? ??????? ??????? ?????? ????? ?? tinyint ????? ?? ???? ???? ?? ??? ??? ???? ?? ???????? ???? ??????:
col1 
---- 

(0 row(s) affected)

???????? ??????

?? ??????? ?? ?????? ???? ????? ?? ???, ?? ????? ???? sp_dbcmptlevel ???????? ?????????? ???? ??????? ?? ???, ????? "sp_dbcmptlevel" ?? "??????? ?????? ???? ??????" ?????? ??? SQL ????? ?????? ?????????

???? ??????? ?? ??? ???? ?????? ?? ?????? ?? ?????????, SQL Server ???????? ?????? ??? "???? ?????? ??????" ???? ?? ??????

Literals SQL Server ?? ????? ???? ??? ?? ???? ??????? ?? ???, ????? ??? SQL Server ???????? ?????? ???? "' ???????? '"?

???

???? ID: 271566 - ????? ???????: 05 ??????? 2011 - ??????: 1.0
???? ???? ???? ??:
  • Microsoft SQL Server 7.0 Standard Edition
  • Microsoft SQL Server 2000 Standard Edition
  • Microsoft SQL Server 2005 Standard Edition
  • Microsoft SQL Server 2005 Developer Edition
  • Microsoft SQL Server 2005 Enterprise Edition
  • Microsoft SQL Server 2005 Express Edition
  • Microsoft SQL Server 2005 Workgroup Edition
??????: 
kbprb kbmt KB271566 KbMthi
???? ?????? ????????
??????????: ?? ???? ?? ???? ??????? ?? ????? ?? Microsoft ????-?????? ?????????? ?????? ?????? ???? ??? ??. Microsoft ???? ??? ????-???????? ?? ????-???????? ????? ?????? ?? ???? ???????? ???? ?? ???? ????? ????? ??? ?? ??? ?????? ?? ???? ???? ???? ??? ????? ??. ???????, ????-???????? ???? ????? ???? ???? ???? ???. ?????, ????????, ?????-???? ?? ??????? ?? ???????? ?? ???? ???, ???? ?? ??? ?????? ???? ???? ??? ????? ??? ?? ???? ??. Microsoft ??????? ??? ???? ?? ?????? ?? ??????????, ????????? ?? ??? ?????? ?? ???? ????? ?? ???? ???????? ?? ??? ???? ????? ?? ??? ????????? ???? ??. Microsoft ????-?????? ?????????? ?? ????? ?????? ?? ?? ??? ??.
?????????? ?? ??????? ????????? ??????? ??:271566

??????????? ???

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com