SQL查询-将列转换成字符串(for xml path)

背景最近做一报表,因为查询的SQL很长很复杂,导致直接查询出现异常,后来想到将大量重复的只是查询条件不同的子查询放到函数中去做,无奈需要的参数不能传进函数中,因为参数格式类似如:’ProjGUID1’,’ProjGUID2’ 这样,这是报表工具生成的,无法修改。现在就要想办法让参数能传进函数中或是换用其他的方式。 思路1、首先想到的是用存储过程,但是在报表工具中调试不通,存储过程不能得到有效...

发布于 技术

在SQL查询中使用LIKE来代替IN

在SQL查询中根据已知ID的集合来查询结果我们通常会用到IN,直接在IN后面给出ID的集合或是在IN后面跟一个子查询。如下: 12SELECT * FROM OrdersWHERE OrderGUID IN('BC71D821-9E25-47DA-BF5E-009822A3FC1D','F2212304-51D4-42C9-AD35-5586A822258E&#...

发布于 技术

SqlServer表死锁的解决方法

前些天写一个存储过程,存储过程中使用了事务,后来我把一些代码注释掉来进行调试找错,突然发现一张表被锁住了,原来是创建事务的代码忘记注释掉。本文表锁住了的解决方法。 其实不光是上面描述的情况会锁住表,还有很多种场景会使表放生死锁,解锁其实很简单,下面用一个示例来讲解: 1 首先创建一个测试用的表: 1234CREATE TABLE Test( TID INT IDENTITY(1,1))...

发布于 技术

使用sp_xml_preparedocument处理XML文档

有时会在存储过程中处理一些XML格式的数据,所以会用到sp_xml_preparedocument,他可以将XML数据进行读取,然后使用 MSXML 分析器 (Msxmlsql.dll) 对其进行分析。我们就可以很容易的在存储过程中得到XML中我们想要的数据。下面的代码就是使用sp_xml_preparedocument读取XML: 12345678910111213141516DECLAR...

发布于 技术

SqlServer数据库的语句及一些操作整理

临近年终,在工作之余对工作和学习中遇到的问题以及常用的一些知识点做了些整理,以备后用。本文涉及的内容为数据库,算是对开发总结(1)—数据库一文的补充。 1 对于主键设置了Identity的表,在删除表中数据后再往表中插入数据,Identity列不是从1起始了,如果想删除数据后Indentity列仍从1起始,可以用下面代码来删除数据。 12truncate table tablenameDBC...

发布于 技术

在数据库中将字表中的多行合并到一列中

几年前就做过这样的查询,在最近的项目中又遇到这样的需求,在此记录一下。 假设有一个文章表Post和一个评论表Comments,可以对文章进行多次评论,现在希望在对Post表查询时能将Post的所有评论内容组合到一个字段中显示。 首先创建表Post和Comments 123456789101112131415create table Post( [PostID] int identity...

发布于 技术

SQL 计算一個字符串在另一个字符串中出現的次数

在sqlserver中來計算一個字符串在另一個字符串中出現的次數,通常會去用循環來匹配,然後計算出出現的次數,這樣的效能不是很高。現在講一種比較簡單的方法也能實現同樣的功能,思路如下:

发布于 技术

开发总结—数据库篇

本文是我在平时工作中所遇到的数据库方面的一些知识总结

发布于 技术

Sql中分隔字串–>查询–>组合字串

最近在工作遇到一个数据库查询的问题,大概如下:表Table1中有字段No和Title,每一个No对应一个Title,表Table2中有NoAll字段,NoAll字段的value是No的组合,以逗号隔开,如”111,222,333″,现在要查询Table2,根据NoAll将其中的每一个No所对应的Title查询出来也以逗号分隔显示,如:”oec2003,oec2004,oec2004″。表定义如下:

发布于 技术

解决sqlserver2005数据库sa登录问题

如果安装sql server 2005的时候,设置的身份验证模式为”windows”(默认), 安装完成后, 再设置为”sql server和windows”的身份验证模式, 则sa用户是被禁用的。必须启用它。

发布于 技术