- 浏览: 81577 次
- 性别:
- 来自: 武汉
文章分类
最新评论
-
package:
不知楼主 是否试过火狐下面报错.....b.firstChil ...
EXTjs grid双层表头的实现 (源代码和示例) -
少年阿郎:
请把你的demo发到我的邮箱15251855442@163.c ...
Ext DateField控件 - 只选择年月 -
岳阳楼:
提示错误:消息: 'prototype' 为空或不是对象行: ...
Ext DateField控件 - 只选择年月 -
hellostory:
引用执行“清除”操作后,问题解决了。 请问如何执行清除操作。。 ...
SVN错误:Attempted to lock an already-locked dir -
jxxms:
可以用,非常好
Ext DateField控件 - 只选择年月
行列互转<!--<br/ />
<br/ />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br/ />
http://www.CodeHighlighter.com/<br/ />
<br/ />
-->create table test(id int,name varchar(20),quarter int,profile int)
insert into test values(1,'a',1,1000) insert into test values(1,'a',2,2000) insert into test values(1,'a',3,4000) insert into test values(1,'a',4,5000) insert into test values(2,'b',1,3000) insert into test values(2,'b',2,3500) insert into test values(2,'b',3,4200) insert into test values(2,'b',4,5500) select * from test --行转列 select id,name, [1] as "一季度", [2] as "二季度", [3] as "三季度", [4] as "四季度", [5] as "5" from test pivot ( sum(profile) for quarter in ([1],[2],[3],[4],[5]) ) as pvt create table test2(id int,name varchar(20), Q1 int, Q2 int, Q3 int, Q4 int) insert into test2 values(1,'a',1000,2000,4000,5000) insert into test2 values(2,'b',3000,3500,4200,5500) select * from test2 --列转行 select id,name,quarter,profile from test2 unpivot ( profile for quarter in ([Q1],[Q2],[Q3],[Q4]) ) as unpvt
sql替换字符串 substring replace<!--<br/ />
<br/ />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br/ />
http://www.CodeHighlighter.com/<br/ />
<br/ />
-->--例子1:
update tbPersonalInfo set TrueName = replace(TrueName,substring(TrueName,2,4),'**') where ID = 1 --例子2: update tbPersonalInfo set Mobile = replace(Mobile,substring(Mobile,4,11),'********') where ID = 1 --例子3: update tbPersonalInfo set Email = replace(Email,'chinamobile','******') where ID = 1
SQL查询一个表内相同纪录 having如果一个ID可以区分的话,可以这么写
<!--<br/ />
<br/ />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br/ />
http://www.CodeHighlighter.com/<br/ />
<br/ />
-->select * from 表 where ID in (
select ID from 表 group by ID having sum(1)>1) <!--<br/ />
<br/ />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br/ />
http://www.CodeHighlighter.com/<br/ />
<br/ />
-->select * from 表 where ID1+ID2+ID3 in
(select ID1+ID2+ID3 from 表 group by ID1,ID2,ID3 having sum(1)>1) <!--<br/ />
<br/ />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br/ />
http://www.CodeHighlighter.com/<br/ />
<br/ />
-->--方法1:
SELECT *FROM zy_bho a WHERE EXISTS (SELECT 1 FROM zy_bho WHERE [PK] <> a.[PK] AND ZYH = a.ZYH) --方法2: select a.* from zy_bho a join zy_bho b on (a.[pk]<>b.[pk] and a.zyh=b.zyh) --方法3: select * from zy_bbo where zyh in (select zyh from zy_bbo group by zyh having count(zyh)>1) --其中pk是主键或是 unique的字段。 把多行SQL数据变成一条多列数据,即新增列
|
- |
0 或 100 (1,2) |
默 认 |
mon dd yyyy hh:miAM(或 PM) |
1 |
101 |
美 国 |
mm/dd/yyyy |
2 |
102 |
ANSI |
yy.mm.dd |
3 |
103 |
英 国/法国 |
dd/mm/yyyy |
4 |
104 |
德 国 |
dd.mm.yy |
5 |
105 |
意 大利 |
dd-mm-yy |
6 |
106(1) |
- |
dd mon yy |
7 |
107(1) |
- |
mon dd, yy |
8 |
108 |
- |
hh:mi:ss |
- |
9 或 109 (1,2) |
默 认设置 + 毫秒 |
mon dd yyyy hh:mi:ss:mmmAM(或 PM) |
10 |
110 |
美 国 |
mm-dd-yy |
11 |
111 |
日 本 |
yy/mm/dd |
12 |
112 |
ISO |
yymmdd yyyymmdd |
- |
13 或 113 (1,2) |
欧 洲默认设置 + 毫秒 |
dd mon yyyy hh:mi:ss:mmm(24h) |
14 |
114 |
- |
hh:mi:ss:mmm(24h) |
- |
20 或 120 (2) |
ODBC 规范 |
yyyy-mm-dd hh:mi:ss(24h) |
- |
21 或 121 (2) |
ODBC 规范(带毫秒) |
yyyy-mm-dd hh:mi:ss.mmm(24h) |
- |
126 (4) |
ISO8601 |
yyyy- mm-ddThh:mi:ss.mmm(无空格) |
- |
127(6, 7) |
带时区 Z 的 ISO8601。 |
yyyy-mm-ddThh:mi:ss.mmmZ (无 空格) |
- |
130 (1,2) |
回历 (5) |
dd mon yyyy hh:mi:ss:mmmAM |
- |
131 (2) |
回历 (5) |
dd/mm/yy hh:mi:ss:mmmAM |
SELECT CONVERT(varchar(100), GETDATE(), 0): 05 16 2006 10:57AM
SELECT CONVERT(varchar(100), GETDATE(), 1): 05/16/06
SELECT CONVERT(varchar(100), GETDATE(), 2): 06.05.16
SELECT CONVERT(varchar(100), GETDATE(), 3): 16/05/06
SELECT CONVERT(varchar(100), GETDATE(), 4): 16.05.06
SELECT CONVERT(varchar(100), GETDATE(), 5): 16-05-06
SELECT CONVERT(varchar(100), GETDATE(), 6): 16 05 06
SELECT CONVERT(varchar(100), GETDATE(), 7): 05 16, 06
SELECT CONVERT(varchar(100), GETDATE(), 8): 10:57:46
SELECT CONVERT(varchar(100), GETDATE(), 9): 05 16 2006 10:57:46:827AM
SELECT CONVERT(varchar(100), GETDATE(), 10): 05-16-06
SELECT CONVERT(varchar(100), GETDATE(), 11): 06/05/16
SELECT CONVERT(varchar(100), GETDATE(), 12): 060516
SELECT CONVERT(varchar(100), GETDATE(), 13): 16 05 2006 10:57:46:937
SELECT CONVERT(varchar(100), GETDATE(), 14): 10:57:46:967
SELECT CONVERT(varchar(100), GETDATE(), 20): 2006-05-16 10:57:47
SELECT CONVERT(varchar(100), GETDATE(), 21): 2006-05-16 10:57:47.157
SELECT CONVERT(varchar(100), GETDATE(), 22): 05/16/06 10:57:47 AM
SELECT CONVERT(varchar(100), GETDATE(), 23): 2006-05-16
SELECT CONVERT(varchar(100), GETDATE(), 24): 10:57:47
SELECT CONVERT(varchar(100), GETDATE(), 25): 2006-05-16 10:57:47.250
SELECT CONVERT(varchar(100), GETDATE(), 100): 05 16 2006 10:57AM
SELECT CONVERT(varchar(100), GETDATE(), 101): 05/16/2006
SELECT CONVERT(varchar(100), GETDATE(), 102): 2006.05.16
SELECT CONVERT(varchar(100), GETDATE(), 103): 16/05/2006
SELECT CONVERT(varchar(100), GETDATE(), 104): 16.05.2006
SELECT CONVERT(varchar(100), GETDATE(), 105): 16-05-2006
SELECT CONVERT(varchar(100), GETDATE(), 106): 16 05 2006
SELECT CONVERT(varchar(100), GETDATE(), 107): 05 16, 2006
SELECT CONVERT(varchar(100), GETDATE(), 108): 10:57:49
SELECT CONVERT(varchar(100), GETDATE(), 109): 05 16 2006 10:57:49:437AM
SELECT CONVERT(varchar(100), GETDATE(), 110): 05-16-2006
SELECT CONVERT(varchar(100), GETDATE(), 111): 2006/05/16
SELECT CONVERT(varchar(100), GETDATE(), 112): 20060516
SELECT CONVERT(varchar(100), GETDATE(), 113): 16 05 2006 10:57:49:513
SELECT CONVERT(varchar(100), GETDATE(), 114): 10:57:49:547
SELECT CONVERT(varchar(100), GETDATE(), 120): 2006-05-16 10:57:49
SELECT CONVERT(varchar(100), GETDATE(), 121): 2006
对上面进行动态生成字符串:
declare @count nvarchar(100);
set @sql1 = 'SELECT CONVERT(varchar(100), GETDATE(), 0)'
set @sql2 = 'SELECT @count = CONVERT(varchar(100), GETDATE(), 0)'
exec sp_executesql @sql2,N'@count nvarchar(50) out',@count out
print @sql1 +':'+ @count
DECLARE @myval decimal (5, 2)
SET @myval = 193.57
SELECT CAST(CAST(@myval AS varbinary(20)) AS decimal(10,5))
-- Or, using CONVERT
SELECT CONVERT(decimal(10,5), CONVERT(varbinary(20), @myval))
--输出193.57000
--输出193.57000
select substring(CONVERT(varchar(15),字段名),11,9) from 表名
select substring(cast(字段名 as varchar(50),6,9)) from 表名
SQL中的相除
SELECT CASE WHEN ISNULL(A+B,0)<>0 THEN
LTRIM(CONVERT(DEC(18,2),A*100.0/(A+B)))+'%' ELSE '' END AS '百分数'
FROM TB
select
LTRIM(CONVERT(DEC(18,2),42*100.0/96))+'%' AS '百分数string' ,--DEC=decimal
CONVERT(decimal(10,2),42*100.0/96) AS '百分数dec', --100 与 100.0是不一样的
CONVERT(decimal(10,2),42*100/96) AS '没有保留到小数点'
--from Tb
order by 百分数dec desc
--43.75% 43.75 43.00
--方法二:
Select (Convert(varchar(50),Round(42*100.0/96,3))+'%') as 百分比 --from A
--43.750000%
四舍五入
function 必须为 tinyint、smallint 或 int。
如果省略 function 或其值为 0(默认值),则将舍入 numeric_expression。
如果指定了0以外的值,则将截断 numeric_expression。*/
SELECT ROUND(150.45648, 2);--保留小数点后两位,需要四舍五入
SELECT ROUND(150.45648, 2, 0);--保留小数点后两位,0为默认值,表示进行四舍五入
SELECT ROUND(150.45648, 2, 1);--保留小数点后两位,不需要四舍五入,这里除0以外都是有同样的效果
SELECT ROUND(150.45648, 2, 2);--保留小数点后两位,不需要四舍五入,这里除0以外都是有同样的效果
--150.46000
--150.45000
--150.45000
--150.45000
对字段出现NULL值的处理
--case
select case when '字段名' is null then '\N' else convert(varchar(20),'字段名') end as 'NewName'
select case when null is null then '\N' else convert(varchar(20),null) end as 'NewName'
--SQL Server 2005:coalesce
select coalesce('字符串类型字段','\N') as 'NewName'
select coalesce(convert(varchar(20),'非字符串类型字段'),'\N') as 'NewName'
select coalesce(convert(varchar(20),null),'\N') as 'NewName'
--coalesce,返回其参数中的第一个非空表达式
select Coalesce(null,null,1,2,null)union
select Coalesce(null,11,12,13,null)union
select Coalesce(111,112,113,114,null)
count的几种情况
select count(*) from tablename
--第二种
select count(ID) from tablename
--第三种,1换成其它值也是可以的
select count(1) from tablename
/*
--第四种,这个不存在性能问题
idint 表ID(如果 indid = 0 或255)。否则为索引所属表的ID
Indid smallint 索引ID:
0=表
1=聚簇索引
>1=非聚簇索引
255=具有text或image数据的表条目。
rows int 基于indid=0 和 indid=1地数据级行数,该值对于indid>1重复。如果indid=255,rows设置为0。
当表没有聚簇索引时,Indid = 0 否则为 1。
*/
select rows,indid from sysindexes where id = object_id('tablename') and indid in (0,1)
查看数据库缓存的SQL
use master
declare @dbid int
Select @dbid = dbid from sysdatabases where name = 'Test'--修改成数据库的名称
select
dbid,UseCounts ,RefCounts,CacheObjtype,ObjType,
DB_Name(dbid) as DatabaseName,SQL
from syscacheobjects
where dbid=@dbid
order by dbid,useCounts desc,objtype
删除计划缓存
DBCC FREEPROCCACHE
--删除某个数据库的计划缓存
USE master
DECLARE @dbid INT
SELECT @dbid=dbid FROM sysdatabases WHERE NAME = '表名'
DBCC FLUSHPROCINDB (@dbid)
导出时加入特殊字符
情况一:全部字段都需要加字符,在这里设置【文本限定符】就可以了。
情况二:
SELECT
[ID]
,''''+convert(varchar(25),[ts],121)+'''' as [ts]
,''''+convert(varchar(25),[otherParty],121)+'''' as [otherParty]
,''''+convert(varchar(25),[StartTime],121)+'''' as [StartTime]
,[CcCause]
,[RrCause]
FROM [表]
效果:74983006,'2010-03-09 23:59:10.000'
TRUNCATE TABLE [Table Name]
下面是对Truncate语句在MSSQLServer2000中用法和原理的说明:
Truncate是SQL中的一个删除数据表内容的语句,用法是:
Truncate table 表名 速度快,而且效率高,因为:
TRUNCATE TABLE 在功能上与不带 WHERE 子句的 DELETE 语句相同:二者均删除表中的全部行。但 TRUNCATE TABLE 比 DELETE 速度快,且使用的系统和事务日志资源少。
DELETE 语句每次删除一行,并在事务日志中为所删除的每行记录一项。TRUNCATE TABLE 通过释放存储表数据所用的数据页来删除数据,并且只在事务日志中记录页的释放。
TRUNCATE TABLE 删除表中的所有行,但表结构及其列、约束、索引等保持不变。新行标识所用的计数值重置为该列的种子。如果想保留标识计数值,请改用 DELETE。如果要删除表定义及其数据,请使用 DROP TABLE 语句。
对于由 FOREIGN KEY 约束引用的表,不能使用 TRUNCATE TABLE,而应使用不带 WHERE 子句的 DELETE 语句。由于 TRUNCATE TABLE 不记录在日志中,所以它不能激活触发器。
TRUNCATE TABLE 不能用于参与了索引视图的表。
其它
dbcc memorystatus
--查看哪个引起的阻塞,blk
EXEC sp_who active
--查看锁住了那个资源id,objid
EXEC sp_lock
--当前查询分析器SPID
--查询分析器的状态栏中可以看到
--比如sa(57),这就表示当前查询分析器SPID为57,这样在使用profile的时候就可以指定当前窗体进行监控
发表评论
-
删除数据库表中重复的数据
2011-09-02 14:16 797--用过滤好的数据创建临时表 create table te ... -
SQLSERVER 和ORACLE数据类型对应关系详解 和对应表格 整理
2011-07-07 15:17 1362Oracle SQLServer 比较 SQLS ... -
使用PL/SQL将excel数据导入oracle
2011-07-07 09:30 1380使用plsql developer PL/SQL Devel ... -
Oracle中根据表查询对应的主键
2011-07-06 17:35 803select a.constraint_name, a.col ... -
Oracle数据库系统视图USER_TAB_COLS和USER_TAB_COLUMNS的区别
2011-05-17 10:35 1587视图SYS.USER_TAB_COLS和SYS.USER_TA ... -
使用存储过程清空oracle中所有的表的数据
2011-05-17 09:42 2296create or replace procedure del ...
相关推荐
一个简单的sql循环语句脚本
SQLBatch Runner是面向SQL Server设计的SQL脚本批量执行工具,通过简单的点击鼠标,即可方便的在多个SQL Server实例上运行多个脚本,并且记录详细的执行日志,提供事务保护,将多脚本执行任务变得高效、可控、易于...
该工具用于Sql的脚本的合并:用法,打开后,指定一个目录:会把该目录下面所有扩展名为.sql...该工具实现功能很简单,但做为一个工具是很有用的,表结构的脚本,你可以va_aaaAlterTable.sql命名,这样就排在第一位了。
比如对于在安装过程中连接数据库并执行SQL脚本这样的需求,使用InstallShield应该会简单地多,而Inno却不支持直接操作数据库,并且相关的资料说明少之又少,还不如NSIS丰富,以至于我踏破铁鞋无觅处,最终却在NSIS的...
│ │ 6.3.1 简单的交叉报表处理示例.sql │ │ 6.3.2 多列转换为行的交叉报表处理示例.sql │ │ 6.3.3 行值动态变化的交叉报表处理示例(转换多列).sql │ │ 6.3.3 行值动态变化的交叉报表处理示例.sql │ │ ...
生成数据库脚本的生成工具,简单易用,无需安装!
使用codesmith生成sql脚本的模板,通过设置简单的属性即可
在delphi中,使用sql的脚本创建数据库,只支持msdos和windows的编码方式创建的脚本,不支持sql2000的缺省方式建立的脚本.创建的数据库文件放在sql2000的默认数据库目录中!写的比较简单,献丑了!请大家多指点!
实现权限管理的SQL学习脚本
本文介绍了使用C#调用cmd来执行osql实现脚本的执行。
全国县及县以上行政区划代码sql脚本 简单易用
Java是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念,因此Java语言具有功能强大和简单易用两个特征。Java语言作为静态面向对象编程语言的代表,极好地实现了面向...
可以直接将数据库中的数据导出为脚本,并可以自己设置过滤条件。使用方法很简单,不在多说了本
sql 前端格式化 脚本,使用很简单,调用sqlFormatter.format(sql语句)可以获取格式化后的sql语句。
非常方便的sql脚本批量执行工具,操作简单,实用;
一个简单的 SQL 脚本示例,用于创建一个名为 employees 的表,并向其中插入一些示例数据。 打开一个数据库管理系统(如 MySQL, PostgreSQL, SQL Server, Oracle 等)的客户端或命令行界面。 连接到你的数据库。这...
sql盲注检测的简单脚本.zip
MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 ...
从最简单的建库,到存储过程,都用脚本语言实现,非常适合初学者学习之用.
通过这个课件的学习,同学们可以编写一些简单的SQL语句