|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
mysql的prepare其实是本地PHP客户端模拟的,并没有根据你mysql的设置做字符集的调整。应该交与mysqlserver端做prepare,同时得调用mysql_set_character_set去操作,server才会按照字符集去做转义。
在网上常常转,经常看到有些工资了求得某些SQL语句而焦头烂额,如今我出格把本人保藏的一些对照精典的SQL拿出来和人人分享一下
1.行列转换--一般
假定有张先生成就表(CJ)以下NameSubjectResult张三语文80张三数学90张三物理85李四语文85李四数学92李四物理82
想酿成姓名语文数学物理张三809085李四859282
declare@sqlvarchar(4000)set@sql=selectNameselect@sql=@sql+,sum(caseSubjectwhen+Subject+thenResultend)[+Subject+]from(selectdistinctSubjectfromCJ)asaselect@sql=@sql+fromtestgroupbynameexec(@sql)
2.行列转换--兼并
有表A,idpid111213212231怎样化成表B:idpid11,2,321,231
创立一个兼并的函数createfunctionfmerg(@idint)returnsvarchar(8000)asbegindeclare@strvarchar(8000)set@str=select@str=@str+,+cast(pidasvarchar)from表Awhereid=@idset@str=right(@str,len(@str)-1)return(@str)Endgo
--挪用自界说函数失掉了局selectdistinctid,dbo.fmerg(id)from表A
3.怎样获得一个数据表的一切列名
办法以下:先从SYSTEMOBJECT体系表中获得数据表的SYSTEMID,然后再SYSCOLUMN表中获得该数据表的一切列名。SQL语句以下:declare@objidint,@objnamechar(40)set@objname=tablenameselect@objid=idfromsysobjectswhereid=object_id(@objname)selectColumn_name=namefromsyscolumnswhereid=@objidorderbycolid
是否是太复杂了?呵呵不外常常用阿.
4.经由过程SQL语句来变动用户的暗码
修正他人的,必要sysadminroleEXECsp_passwordNULL,newpassword,User
假如帐号为SA实行EXECsp_passwordNULL,newpassword,sa
5.怎样判别出一个表的哪些字段不同意为空?
selectCOLUMN_NAMEfromINFORMATION_SCHEMA.COLUMNSwhereIS_NULLABLE=NOandTABLE_NAME=tablename
6.怎样在数据库里找到含有不异字段的表?a.查已知列名的情形SELECTb.nameasTableName,a.nameascolumnnameFromsyscolumnsaINNERJOINsysobjectsbONa.id=b.idANDb.type=UANDa.name=你的字段名字
b.未知列名查一切在分歧表呈现过的列名Selecto.nameAstablename,s1.nameAscolumnnameFromsyscolumnss1,sysobjectsoWheres1.id=o.idAndo.type=UAndExists(Select1Fromsyscolumnss2Wheres1.name=s2.nameAnds1.ids2.id)
7.查询第xxx行数据
假定id是主键:select*from(selecttopxxx*fromyourtable)aawherenotexists(select1from(selecttopxxx-1*fromyourtable)bbwhereaa.id=bb.id)假如利用游标也是能够的fetchabsolute[number]from[cursor_name]行数为相对行数
8.SQLServer日期盘算a.一个月的第一天SELECTDATEADD(mm,DATEDIFF(mm,0,getdate()),0)b.本周的礼拜一SELECTDATEADD(wk,DATEDIFF(wk,0,getdate()),0)c.一年的第一天SELECTDATEADD(yy,DATEDIFF(yy,0,getdate()),0)d.季度的第一天SELECTDATEADD(qq,DATEDIFF(qq,0,getdate()),0)e.上个月的最初一天SELECTdateadd(ms,-3,DATEADD(mm,DATEDIFF(mm,0,getdate()),0))f.客岁的最初一天SELECTdateadd(ms,-3,DATEADD(yy,DATEDIFF(yy,0,getdate()),0))g.本月的最初一天SELECTdateadd(ms,-3,DATEADD(mm,DATEDIFF(m,0,getdate())+1,0))h.本月的第一个礼拜一selectDATEADD(wk,DATEDIFF(wk,0,dateadd(dd,6-datepart(day,getdate()),getdate())),0)i.今年的最初一天SELECTdateadd(ms,-3,DATEADD(yy,DATEDIFF(yy,0,getdate())+1,0))。
感激那些网上供应相干SQL的作者
你看出了作者的深度?深处半米!当初是冲那么多的大牛给他写序才买的,后来才发现无啥内容,作者也只是才用几年的新手,百花了几十两银子,再次感叹当今社会的虚伪与浮躁 |
|