-
SQLServer将一列的多行内容拼接成一行的实现方法
下面大家先看下示例代码:示例昨天遇到一个SQLServer的问题:需要写一个储存过程来处理几个表中的数据,最后问题出在我想将一个表的一个列的多行内容拼接成一行,比如表中有两列数据:类别名称AAA企业1AAA企业2AAA企业3BBB企业4BBB企业5我想把这个表变成如下格式:类别名称AAA企业1,企业2,企业3BBB企业4,企业5一开始挺头疼的(会了的肯定没有这种感觉,不会那必须是头疼啊(*^__^*)),从网上找了点资料,算是找到一种比较简单方便的方法吧,现在大体总结一下,供大家共同学习。原先的表名为Table_A,实现代码如下:select类别,名称=(stuff((select','+名称fromTable_Awhere类别=A.类别forxmlpath('')),1,1,''))fromTable_AasAgroupby类别这里使用了SQLServer2005版本以后加入的stuff以及forxmlpath,先说下在上面这句sql中的作用,然后再详细的说明一下这两个的用法...
数据库操作教程 2022-09-23 17:38:45 -
sqlserver中存储过程的递归调用示例
递归式指代码片段调用自身的情况;危险之处在于:如果调用了自身一次,那么如何防止他反复地调用自身。也就是说提供递归检验来保证适当的时候可以跳出...
数据库操作教程 2022-09-23 17:38:39 -
SQL语句实现查询SQLServer服务器名称和IP地址
获取服务器名称:SELECTSERVERPROPERTY('MachineName')select@@SERVERNAMEselectHOST_NAME()获取IP地址可以使用xp_cmdshell执行ipconfig命令:--开启xp_cmdshellexecsp_configure'showadvancedoptions',1reconfigurewithoverrideexecsp_configure'xp_cmdshell',1reconfigurewithoverrideexecsp_configure'showadvancedoptions',0reconfigurewithoverridegobegindeclare@iplinevarchar(200)declare@posintdeclare@ipvarchar(40)setnocountonset@ip=nullifobject_id('tempdb....
数据库操作教程 2022-09-23 17:38:36 -
sql中循环处理当前行数据和上一行数据相加减
以下事例,使用游标循环表#temptable中数据,然后让当前行和上一行中的argument1相加存放到当前行的argument2中,比较简单。--droptable#temptablecreatetable#temptable(argument1int,argument2int,argument3datetime)declare@rowcountint,@argument1int,@argument2nvarchar(50),@argument3datetimeset@rowcount=1set@argument1=1set@argument2=0set@argument3=GETDATE()while(@rowcount<100)begininsertinto#temptable(argument1,argument2,argument3)values(@argument1,@argument2,@argument3)set@argument1=@argument1+datepart(day,@argument3)set@argument3=@argument3-1set...
数据库操作教程 2022-09-23 17:38:36 -
日常收集常用SQL查询语句大全
常用sql查询语句如下所示:一、简单查询语句1.查看表结构SQL>DESCemp;2.查询所有列SQL>SELECT*FROMemp;3.查询指定列SQL>SELECTempmo,ename,mgrFROMemp;SQL>SELECTDISTINCTmgrFROMemp;只显示结果不同的项4.查询指定行SQL>SELECT*FROMempWHEREjob='CLERK';5.使用算术表达式SQL>SELECTename,sal*13+nvl(comm,0) FROMemp;nvl(comm,1)的意思是,如果comm中有值,则nvl(comm,1)=comm;comm中无值,则nvl(comm,1)=0。SQL>SELECTename,sal*13+nvl(comm,0)year_salFROMemp;(year_sal为别名,可按别名排序)SQL>SELECT*FROMempWHEREhiredate>'01-1月-82';6.使用like操作符(%,_)%表示一个或多个字符,_表示一个字符,[charlist]表示字符...
数据库操作教程 2022-09-23 17:38:33 -
在sqlServer自定义一个用户定义星期函数
文件:.wmv;大小:19,535KB;长度:00:26:39。下载地址:SqlFunction_udf_Week.rar以下内容于20120105更新:2012年刚到,开发的软件使用这个函数发现bug...
数据库操作教程 2022-09-23 17:38:32 -
MSSQL报错:参数数据类型text对于replace函数的参数1无效的解决办法
但是我们可以换一种方法解决这个问题。下面就来分析下解决办法...
数据库操作教程 2022-09-23 17:38:28 -
针对distinct疑问引发的一系列思考
有人提出了这样一个问题,整理出来给大家也参考一下假设有如下这样一张表格:这里的数据,具有如下的特征:在一个DepartmentId中,可能会有多个Name,反之也是一样。就是说Name和DepartmentId是多对多的关系...
数据库操作教程 2022-09-23 17:38:26 -
浅析SQL语句中GROUPBY的用法
GROUPBY是分组查询,一般GROUPBY是和聚合函数配合使用,你可以想想你用了GROUP BY按 ITEM.ITEMNUM这个字段分组,那其他字段内容不同,变成一对多又改如何显示呢,比如下面所示A B1 abc1 bcd1 asdfgselectA,BfromtablegroupbyA你说这样查出来是什么结果,A B abc1 bcd asdfg右边3条如何变成一条,所以需要用到聚合函数,比如selectA,count(B)数量fromtablegroupbyA这样的结果就是A 数量1 3groupby有一个原则,就是select后面的所有列中,没有使用聚合函数的列,必须出现在groupby后面...
数据库操作教程 2022-09-23 17:38:18 -
sql多表行转列、级联行转列示例代码
现有两表A,BA表存储商品点击日志,B表存储商品要求显示当天所有商品点击量列表并附带总数并按天排序复制代码代码如下:declare@sqlvarchar(2000)set@sql='selectCONVERT(varchar(100),a.[Time],23)as时间,count(b...
数据库操作教程 2022-09-23 17:38:15 -
sqlserver不重复的随机数
MSSQL随机数MSSQL有一个函数CHAR()是将int(0-255)ASCII代码转换为字符。那我们可以使用下面MSSQL语句,可以随机生成小写、大写字母,特殊字符和数字...
数据库操作教程 2022-09-23 17:38:13 -
SqlServer里删除数据表中重复记录的例子
[项目]数据库中users表,包含u_name,u_pwd两个字段,其中u_name存在重复项,现在要实现把重复的项删除![分析]1、生成一张临时表new_users,表结构与users表一样;2、对users表按id做一个循环,每从users表中读出一个条记录,判断new_users中是否存在有相同的u_name,如果没有,则把它插入新表;如果已经有了相同的项,则忽略此条记录;3、把users表改为其它的名称,把new_users表改名为users,实现我们的需要。[程序]复制代码代码如下:declare@idint,@u_namevarchar(50),@u_pwdvarchar(50)set@id=1while@id<1000begin ifexists(selectu_namefromuserswhereu_id=@id) begin &nb...
数据库操作教程 2022-09-23 17:38:06