Óë³Ö¾Ã±íÒ»Ñù£¬ÓÅ»¯Æ÷´´½¨²¢Î¬»¤ÁÙʱ±íµÄ·Ö²¼Í³¼ÆÐÅÏ¢£¬²¢¸ú×ÙËüµÄ»ùÊý¡£µ±Ë÷ÒýÁÙʱ±íʱ£¬ÕâÖÖÄÜÁ¦ÓÈÆäÖØÒª¡£µ±ÓÅ»¯Æ÷ÐèÒªÆÀ¹ÀÑ¡ÔñÐÔʱ£¬Ëü¾Í¿ÉÒÔ¸ù¾ÝÕâЩ·Ö²¼Í³¼ÆÐÅÏ¢Éú³É¾¹ýÓÅ»¯µÄ¼Æ»®¡£ÕâÊÇÁÙʱ±íÔÚÐÔÄÜ·½Ã治ͬÓÚ±í±äÁ¿µÄÖ÷ÒªÌØÐÔÖ®Ò»¡£
´ËÍ⣬ÒòΪÁÙʱ±í»áά»¤Í³¼ÆÐÅÏ¢£¬Èç¹ûÉϴαàÒëºó±»ÒýÓñíÓÐ×ã¹»¶àµÄÐз¢Éú±ä»¯£¨¼´´ïµ½ÖØÐ±àÒë·§Öµ£©´úÂë»á±»ÖØÐ±àÒë¡£ÖØÐ±àÒë¡£ÖØÐ±àÒë·§ÖµÊǸù¾Ý±íÀàÐͺÍÐÐÊý¼ÆËãµÃ³öµÄ¡£
¶ÔÓڳ־ñíÀ´Ëµ£¬Èç¹ûn<=500,ÔòRT=500£¨n=µ±±àÒë²éѯ¼Æ»®Ê±±íµÄ»ùÊý£©£»Èç¹ûn>500£¬ÔòRT=500+0.20*n¡£
¶ÔÓÚÁÙʱ±í£¬Èç¹ûn<6£¬ÔòRT=6£»Èç¹û6<=n<=500£¬ÔòRT=500£»Èç¹ûn>500£¬ÔòRT=500+0.20*n¡£ÀýÈ磬ÏòÁÙʱ±íÖмÓÔØ6Ðкó£¬ÔÙÔö¼ÓµÚ7Ðн«µ¼ÖÂÖØÐ±àÒ룬¶ø³Ö¾Ã±íºÜÍí²Å»á³öÏÖµÚÒ»´ÎÖØÐ±àÒë¡£Èç¹ûÄãÏëÔÚ²éѯÁÙʱ±íʹÓÃKEEP PLAN²éѯÌáʾ¼´¿É¡£
ÓÅ»¯Æ÷ά»¤ÁÙʱ±íµÄ·Ö²¼Í³¼ÆÐÅÏ¢ÕâÒ»ÌØµã¼°ÉÏÊö½áÂÛÊÇÑ¡ÔñÁÙʱ¶ÔÏóÀàÐ͵Ä×îÖØÒªÌØÕ÷¡£µ±´ÓÁÙʱ±íºÍ±í±äÁ¿ÖÐ×ö³öÑ¡Ôñʱ£¬ÕâЩÒòËØÓÈÎªÖØÒª£¬ÓÅ»¯Æ÷²»»áΪ±í±äÁ¿´´½¨»òά»¤·Ö²¼Í³¼ÆÐÅÏ¢¡£ËäȻҲΪ±í±äÁ¿Î¬»¤ÐмÆÊýÐÅÏ¢£¬µ«Õâ¸öÐÅϢͨ³£²»×¼È·¡£±í±äÁ¿×Ô¼º²»»áÒýÆðÖØÐ±àÒ룬¶øÖØÐ±àÒë¶Ô ......
ÌâĿҪÇó
°¢ÀïbabaµÄÃæÊÔÌâ
ÓÐÈý¸ö±í
ѧÉú±í S
SID SNAME
½Ìʦ¿Î±í T
TID TNAME TCL
³É¼¨±í SC
SID TCL SCR
¸÷×ֶεĺ¬Òå²»ÓÃÎÒ±êÃ÷Á˰ɣ¬´óÏÀ¸ç¸çô£¡ºÇºÇ
ÏÖÔÚÒªÇóдSQL²éѯ
1¡¢Ñ¡ÐÞÁËA¡¢B¿Î³Ì£¬²¢ÇÒA¿Î³ÌµÄ³É¼¨´óÓÚB³É¼¨µÄѧÉúÐÕÃû£¿
2¡¢Ã»ÓÐÑ¡ÐÞ‘li’ÀÏʦµÄ¿Î³ÌµÄѧÉú£¬ÒªÇó²»ÄÜÓÃin£¬exists µÈ´Ê£¿
create table SC(
SID varchar(64) ,
TCL varchar(64) ,
SCR int) ;
create table S (
SID varchar(64) ,
SNAME varchar(64)
) ;
create table T
(
TID varchar(64),
TNAME varchar(64),
TCL varchar(64)
) ;
insert into S VALUES ('1','11') ;
insert into S VALUES ('2','22') ;
insert into S VALUES ('3','33') ;
insert into ......
·¢²¼Ò»¸öʵÓÃС¹¤¾ß£¬¿ÉÒԺܷ½±ãµÄÔÚÊý¾Ý¿âÖÐÕÒµ½°üº¬Ö¸¶¨×Ö·û´®µÄÊý¾Ý±íÃû¼°ÏàÓ¦¼Ç¼£º
/*
¹¦ÄÜ£º²éѯÊý¾Ý¿âÖаüº¬Ö¸¶¨×Ö·û´®µÄÊý¾Ý±íÃû¼°ÏàÓ¦¼Ç¼
×÷Õߣº³Â¼ÓÅô chjpeng#163.com
ÈÕÆÚ£º2009-08-17
*/
declare @key varchar(30)
set @key = 'test' --Ìæ»»ÎªÒª²éÕÒµÄ×Ö·û´®
DECLARE @tabName VARCHAR(40),@colName VARCHAR(40)
DECLARE @sql VARCHAR(2000)
declare @tsql varchar(8000)
DECLARE tabCursor CURSOR FOR
SELECT name from sysobjects WHERE xtype = 'u' AND name <> 'dtproperties'
OPEN tabCursor
FETCH NEXT from tabCursor INTO @tabName
WHILE @@fetch_status = 0
BEGIN
set @tsql = ''
DECLARE colCursor CURSOR FOR Select Name from SysColumns Where id=Object_Id(@tabName) and xtype=167
OPEN colCursor
FETCH NEXT from colCursor INTO @colName
WHILE @@fetch_status = 0
BEGIN
SET @sql = 'if(exists(select * from ' + @tabName + ' where '
SET @sql = @sql + @colName + ' like ''%' + @key + '%'')) begin sel ......
Access SQL×¢Èë²Î¿¼
°æ±¾ 0.2.1
(×î½ü¸üР10/10/2007)
Ô×÷Õß²»Ïê
ÃèÊö SQL²éѯ¼°×¢ÊÍ
×¢ÊÍ·û AccessÖÐûÓÐרÃŵÄ×¢ÊÍ·ûºÅ.Òò´Ë"/*", "--"ºÍ"#"¶¼Ã»·¨Ê¹ÓÃ.µ«ÊÇ¿ÉÒÔʹÓÿÕ×Ö·û"NULL"(%00)´úÌæ:
' UNION SELECT 1,1,1 from validTableName%00
Óï·¨´íÎóÐÅÏ¢ "[Microsoft][Driver ODBC Microsoft Access]"
¶à¾äÖ´ÐÐ ²»Ö§³Ö.
ÁªºÏ²éѯ AccessÖ§³ÖÁªºÏ²éѯ,UNIONºóµÄfrom¹Ø¼ü×Ö±ØÐëʹÓÃÒ»¸öÒѾ´æÔڵıíÃû.
¸½Êô²éѯ AccessÖ§³Ö¸½Êô²éѯ(ÀýÈç:"TOP 1"ÓÃÀ´·µ»ØµÚÒ»ÐеÄÄÚÈÝ) :
' AND (SELECT TOP 1 'someData' from validTableName)%00
LIMITÖ§³Ö LIMIT²»±»Ö§³Ö,µ«ÊÇÔÚ²éѯÖпÉÒÔÉùÃ÷"TOP N"À´ÏÞÖÆ·µ»ØÄÚÈݵÄÐÐÊý:
' UNION SELECT TOP 3 AttrName from validTableName%00 : ÕâÌõÓï¾ä·µ»Ø(ǰ)3 ÐÐ.
Èòéѯ·µ»Ø0ÐÐ Ôڽű¾ÔÚ·µ»ØµÄHTML½á¹ûÖÐÖ»ÏÔʾµÚÒ»¸ö²éѯµÄ½á¹ûµÄʱºò·Ç³£ÓÐÓÃ:
' AND 1=0 UNION SELECT AttrName1,AttrName2 from validTableName%00
×Ö·û´®Á¬½Ó ²»Ö§³ÖCONCAT()º¯Êý. ¿ÉÒÔʹÓÃ"&"»ò"+"²Ù×÷À´Á©½ÓÁ½¸ö×Ö·û´®.ÔÚʹÓõÄʱºî±ØÐë¶ÔÕâÁ½¸ö²Ù×÷·û½øÐÐURLencode±àÂë:
' UNION SELECT 'web ......
Access SQL×¢Èë²Î¿¼
°æ±¾ 0.2.1
(×î½ü¸üР10/10/2007)
Ô×÷Õß²»Ïê
ÃèÊö SQL²éѯ¼°×¢ÊÍ
×¢ÊÍ·û AccessÖÐûÓÐרÃŵÄ×¢ÊÍ·ûºÅ.Òò´Ë"/*", "--"ºÍ"#"¶¼Ã»·¨Ê¹ÓÃ.µ«ÊÇ¿ÉÒÔʹÓÿÕ×Ö·û"NULL"(%00)´úÌæ:
' UNION SELECT 1,1,1 from validTableName%00
Óï·¨´íÎóÐÅÏ¢ "[Microsoft][Driver ODBC Microsoft Access]"
¶à¾äÖ´ÐÐ ²»Ö§³Ö.
ÁªºÏ²éѯ AccessÖ§³ÖÁªºÏ²éѯ,UNIONºóµÄfrom¹Ø¼ü×Ö±ØÐëʹÓÃÒ»¸öÒѾ´æÔڵıíÃû.
¸½Êô²éѯ AccessÖ§³Ö¸½Êô²éѯ(ÀýÈç:"TOP 1"ÓÃÀ´·µ»ØµÚÒ»ÐеÄÄÚÈÝ) :
' AND (SELECT TOP 1 'someData' from validTableName)%00
LIMITÖ§³Ö LIMIT²»±»Ö§³Ö,µ«ÊÇÔÚ²éѯÖпÉÒÔÉùÃ÷"TOP N"À´ÏÞÖÆ·µ»ØÄÚÈݵÄÐÐÊý:
' UNION SELECT TOP 3 AttrName from validTableName%00 : ÕâÌõÓï¾ä·µ»Ø(ǰ)3 ÐÐ.
Èòéѯ·µ»Ø0ÐÐ Ôڽű¾ÔÚ·µ»ØµÄHTML½á¹ûÖÐÖ»ÏÔʾµÚÒ»¸ö²éѯµÄ½á¹ûµÄʱºò·Ç³£ÓÐÓÃ:
' AND 1=0 UNION SELECT AttrName1,AttrName2 from validTableName%00
×Ö·û´®Á¬½Ó ²»Ö§³ÖCONCAT()º¯Êý. ¿ÉÒÔʹÓÃ"&"»ò"+"²Ù×÷À´Á©½ÓÁ½¸ö×Ö·û´®.ÔÚʹÓõÄʱºî±ØÐë¶ÔÕâÁ½¸ö²Ù×÷·û½øÐÐURLencode±àÂë:
' UNION SELECT 'web ......
ÔÚÁ¬½ÓSQL Server 2000Êý¾Ý¿âʱ£¬ÏµÍ³ÌáʾÈçÏ´íÎó£º
ÔÚÍøÉÏѰÕÒµ½´¦Àí·½·¨£º
(°ÑSQL server updateµ½sp4)
1¡¢ÔÚ²éѯ·ÖÎöÆ÷ÖÐÊäÈë select @@version ²¢Ö´ÐÐ
SQL Server 2000 °æ±¾ºÍ¼¶±ð
@@VERSION
²úÆ·¼¶±ð
SQL Server 2000 Ôʼ°æ±¾
8.00.194
RTM
Database Components SP1
8.00.384
SP1
Database Components SP2
8.00.534
SP2
Database Components SP3¡¢SP3a
8.00.760
SP3
MSDE 2000 Release A
8.00.760
SP3
Database Components SP4
8.00.2039
SP4
Èç·¢ÏÖ²»ÊÇSP4£¬Ôòµ½http://www.microsoft.com/downloads/details.aspx?displaylang=zh-cn&FamilyID=8E2DFC8D-C20E-4446-99A9-B7F0213F8BC5
ÏÂÔØSP4£¬²¢°²×°¡£ÎÒÖ»°²×°ÁËSQL2000-KB884525-SP4-x86-CHS.EXE£¬ÁíÍ⼸¸öÎļþÊÇÕë¶Ô¹¤¾ßÉý¼¶µÄ£¬ÎÒûÓа²×°¡£
°²×°Íê³Éºó£¬Á¬½Ó³É¹¦£¡ ......
SQL Server 2000ʹµÃÒÔXMLµ¼³öÊý¾Ý±äµÃ¸ü¼Ó¼òµ¥£¬µ«ÔÚSQL Server 2000Öе¼ÈëXMLÊý¾Ý²¢¶ÔÆä½øÐд¦ÀíÔòÓÐЩÂé·³¡£¡¡¡¡Èç¹ûÄã²Î¿¼Books Online£¨BOL£©£¬Äã»á·¢ÏÖÓÐÏà¹ØµÄÌõÄ¿£¬°üÀ¨OPENXMLÒÔ¼° OPENROWSET¡£ËùÓеÄÕâЩÀý×Ó¶¼Ö§³Ö½«XMLÎı¾×÷ΪÒѾÉùÃ÷µÄ±äÁ¿£¬Õâ¶ÔÓÚ¾³£´¦ÀíÎı¾µÄÓû§À´Ëµ·Ç³£·½±ã£¬µ«¶ÔÓÚÏ£ÍûÔÚ¿ª·¢ÖжÁÈ¡XMLÎļþ²¢½øÐÐÏàÓ¦´¦ÀíµÄ¿ª·¢ÈËÔ±À´Ëµ¾Í²»ÊÇÕâÑùÁË¡£´¦ÀíÕâÑùµÄÎÊÌ⣬»òÐí×îºÃ´ÓÄÚµ½ÍâÀ´¶ÔÆä½øÐзÖÎö¡£
¡¡¡¡OPENXMLÊÇÒ»¸örowsetº¯Êý£¨¼´·µ»ØÒ»¸örowset£©£¬ËüµÄ¹¤×÷·½Ê½ÀàËÆÓÚrowsetº¯ÊýOPENQUERYºÍOPENROWSET¡£Ê¹ÓÃOPENXML¿ÉÒÔ¶ÔXMLÊý¾ÝÖ´ÐÐJOINs²Ù×÷¶øÎÞÐèÊ×Ïȵ¼ÈëÊý¾Ý¡£Ä㻹¿ÉÒÔ½«ÆäͬINSERT¡¢SELECT¡¢UPDATEÒÔ¼°DELETEµÈ²Ù×÷ÁªºÏʹÓá£
¡¡¡¡È»¶ø£¬ÒªÊ¹ÓÃOPENXML£¬Äã±ØÐëÖ´ÐÐÁ½ÏîOPENQUERYºÍOPENROWSET²¢²»ÐèÒªµÄÈÎÎñ¡£ÕâÁ½ÏîÈÎÎñÐèÒªÁ½¸öϵͳ´æ´¢½ø³Ì¡£
¡¡¡¡µÚÒ»¸öÊÇsp_xml_preparedocument£¬Ëü½«¶ÁÈ¡ÌØ¶¨µÄXMLÎı¾²¢½«ÆäÄÚÈÝÌáÈ¡µ½ÄÚ´æÖС£ÆäÓï·¨ÈçÏ£º
sp_xml_preparedocument @hdoc = OUTPUT,
[, @xmltext = ]
[, @xpath_namespaces =
¡¡¡¡¾ßÌå²ÎÊýÈçÏ£º
¡¡¡¡@hdoc£ºÖ¸ÏòijÄÚ´æÇøÓòµÄ¾ä±ú£¨´Ó×÷ÓÃÉÏ¿´µÈͬÓÚÒ»¸öÖ¸Õ룩£¬Ïà¹ØÊý¾Ý´ ......
SQL Server 2000ʹµÃÒÔXMLµ¼³öÊý¾Ý±äµÃ¸ü¼Ó¼òµ¥£¬µ«ÔÚSQL Server 2000Öе¼ÈëXMLÊý¾Ý²¢¶ÔÆä½øÐд¦ÀíÔòÓÐЩÂé·³¡£¡¡¡¡Èç¹ûÄã²Î¿¼Books Online£¨BOL£©£¬Äã»á·¢ÏÖÓÐÏà¹ØµÄÌõÄ¿£¬°üÀ¨OPENXMLÒÔ¼° OPENROWSET¡£ËùÓеÄÕâЩÀý×Ó¶¼Ö§³Ö½«XMLÎı¾×÷ΪÒѾÉùÃ÷µÄ±äÁ¿£¬Õâ¶ÔÓÚ¾³£´¦ÀíÎı¾µÄÓû§À´Ëµ·Ç³£·½±ã£¬µ«¶ÔÓÚÏ£ÍûÔÚ¿ª·¢ÖжÁÈ¡XMLÎļþ²¢½øÐÐÏàÓ¦´¦ÀíµÄ¿ª·¢ÈËÔ±À´Ëµ¾Í²»ÊÇÕâÑùÁË¡£´¦ÀíÕâÑùµÄÎÊÌ⣬»òÐí×îºÃ´ÓÄÚµ½ÍâÀ´¶ÔÆä½øÐзÖÎö¡£
¡¡¡¡OPENXMLÊÇÒ»¸örowsetº¯Êý£¨¼´·µ»ØÒ»¸örowset£©£¬ËüµÄ¹¤×÷·½Ê½ÀàËÆÓÚrowsetº¯ÊýOPENQUERYºÍOPENROWSET¡£Ê¹ÓÃOPENXML¿ÉÒÔ¶ÔXMLÊý¾ÝÖ´ÐÐJOINs²Ù×÷¶øÎÞÐèÊ×Ïȵ¼ÈëÊý¾Ý¡£Ä㻹¿ÉÒÔ½«ÆäͬINSERT¡¢SELECT¡¢UPDATEÒÔ¼°DELETEµÈ²Ù×÷ÁªºÏʹÓá£
¡¡¡¡È»¶ø£¬ÒªÊ¹ÓÃOPENXML£¬Äã±ØÐëÖ´ÐÐÁ½ÏîOPENQUERYºÍOPENROWSET²¢²»ÐèÒªµÄÈÎÎñ¡£ÕâÁ½ÏîÈÎÎñÐèÒªÁ½¸öϵͳ´æ´¢½ø³Ì¡£
¡¡¡¡µÚÒ»¸öÊÇsp_xml_preparedocument£¬Ëü½«¶ÁÈ¡ÌØ¶¨µÄXMLÎı¾²¢½«ÆäÄÚÈÝÌáÈ¡µ½ÄÚ´æÖС£ÆäÓï·¨ÈçÏ£º
sp_xml_preparedocument @hdoc = OUTPUT,
[, @xmltext = ]
[, @xpath_namespaces =
¡¡¡¡¾ßÌå²ÎÊýÈçÏ£º
¡¡¡¡@hdoc£ºÖ¸ÏòijÄÚ´æÇøÓòµÄ¾ä±ú£¨´Ó×÷ÓÃÉÏ¿´µÈͬÓÚÒ»¸öÖ¸Õ룩£¬Ïà¹ØÊý¾Ý´ ......