|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
也就是说在php本地调用pdoprepare中的mysql_real_escape_string来操作query,使用的是本地单字节字符集,即编码为xbfx5cx27,并带入到mysql中查询,由于使用setnames设置了连接字符集.排序|数据
/*--原帖地点:http://community.csdn.net/Expert/topic/3866/3866872.xml?temp=.2154199--*/
--测试数据createtabletb1(idint,col1varchar(10),col2int)inserttb1select1,aa,111unionallselect2,aa,111unionallselect3,aa,111unionallselect4,bb,222unionallselect5,bb,222unionallselect6,cc,333unionallselect7,cc,333unionallselect8,cc,333unionallselect9,cc,333
createtabletb2(col1varchar(10),sizeint)inserttb2selectaa,2unionallselectcc,2--改改按次unionallselectbb,0go
/*--处置请求:
tb1与tb2经由过程col2联系关系,tb2的col1包括一切tb1.col1
请求写函数完成以下排序:tb1中的col1依照tb2中的col1界说的纪录数,举行分列。如:在tb2中:aa的size=2,就先排2条aa纪录cc的size=2,而且在aa前面,以是接着排2条cc的纪录而bb在tb2中界说是0条,则不介入排序,一直显现在最初反复轮回,不敷的由前面的纪录补上
终极完成以下排序了局:
idcol1col2--------------------------------1aa1112aa1116cc3337cc3333aa1118cc3339cc3334bb2225bb222--*/
--排序函数createfunctionf_sort(@idint,@col1varchar(10))returnsvarchar(20)asbegindeclare@iint,@sizeint,@jintset@i=0select@i=casewhen@sizeisnullthen@i+1else@iend,@size=casewhen@col1=col1thensizeelse@sizeendfromtb2if@size=0return(replicate(20,9))select@j=count(*)fromtb1whereid<@idandcol1=@col1return(right(10000000000+isnull(@j,0)/@size,10)+right(10000000000+@i,10))endgo
--挪用完成查询select*fromtb1aorderbydbo.f_sort(id,col1)go
--删除测试droptabletb1,tb2dropfunctionf_sort
这能找出所有错误的99.99%。它不能找出的是仅仅涉及数据文件的损坏(这很不常见)。如果你想要检查一张表,你通常应该没有选项地运行myisamchk或用-s或--silent选项的任何一个。 |
|