学习 SQL 应知道的动态 SQL 语句基本语法
1 、普通 SQL 语句可以用 Exec 执行
eg: Select * from tableName
Exec('select * from tableName')
Exec sp_executesql N'select * from tableName' -- 请注意字符串前一定要加 N
2、字段名,表名,数据库名之类作为变量时,必须用动态 SQL
eg:
declare @fname varchar(20)
set @fname = 'FiledName'
Select @fname from tableName -- 错误,不会提示错误,但结果为固定值 FiledName,并非
所要。
Exec('select ' + @fname + ' from tableName') -- 请注意 加号前后的 单引号的边上加空格
当然将字符串改成变量的形式也可
declare @fname varchar(20)
set @fname = 'FiledName' --设置字段名
declare @s varchar(1000)
set @s = 'select ' + @fname + ' from tableName'
Exec(@s) -- 成功
exec sp_executesql @s -- 此句会报错
declare @s Nvarchar(1000) -- 注意此处改为 nvarchar(1000)
set @s = 'select ' + @fname + ' from tableName'
Exec(@s) -- 成功
exec sp_executesql @s -- 此句正确
3、输出参数
declare @num int,
@sqls nvarchar(4000)
set @sqls='select count(*) from tableName'
exec(@sqls)
--如何将 exec 执行结果放入变量中?
declare @num int,
@sqls nvarchar(4000)
set @sqls='select @a=count(*) from tableName '
exec sp_executesql @sqls,N'@a int output',@num output
select @num
此外,如果想要在 SQL 语句 字符串中使用 单引号 '' 可以 使用 ''''
SQL Server 数据库中经常用到的 identity 列
发布时间:2008.03.24 04:59 来源:赛迪网 作者:Alice
【赛迪网-IT 技术报道】 中,经常会用到 标识列,这种自增长
的字段操作起来的确是比较方便。但它有时还会带来一些麻烦。
示例一 :当表中被删除了某些数据的时候,自增长列的编号就不再是一个连
线的数列。这种时候我们可以用以下方案来解决。
允许将显式值插入表的标识列中,当设置为 时,这时可能在 操作时手工
指定插入到标识列中的编号,同时必须在操作完成后,将 还原成
,否则下次插入的时候必须指定编号,那不然就无法完成 操作。
示例二:当表中的记录被全部删除,但此时标识列的值越来越大的时候,如
果不加以重置,它还会无休止的增长。这个时候我们就要用到:
(
!"
将把指定表的种子值强制重设为 !。然而,你可能不想将种子重设为 !,在这种情况
下,你可以用你想用的种子值替代第三个参数。有时候你可能想知道当前的种子,而不是想
重设种子 这时你就要用到 ,而不用再去顾忌第三个参数。
“一网打尽”通用 SQL 数据库的查询语句 (1)
发布时间:2008.01.04 04:40 来源:赛迪网 作者:20933
通用 数据库的查询语句:
(注释:本文中 #$#%& 查询只包括选择列表、' 子句和 ( 子
句。)
一、 简单查询
简单的 #$#%& 查询只包括选择列表、' 子句和 ( 子句。它们分别
说明所查询列、查询的表或视图、以及搜索条件等。
例如,下面的语句查询 $#)* 表中姓名为“张三”的 %+#, 字段和
,#* 字段。
%+#, ,#*
'$#)*
(#,-.张三 .
(一) 选择列表
选择列表/$*%*$"指出所查询列,它可以是一组列名列表、星号、表达式、变量
/包括局部变量和全局变量"等构成。
1、选择所有列
例如,下面语句显示 $#)* 表中所有列的数据0
1
'$#)*
2、选择部分列并指定它们的显示次序
查询结果集合中数据的排列顺序与选择列表中所指定的列名排列顺序相同。
例如0%+#, ,#*
'$#)*
3、更改列标题
在选择列表中,可重新指定列标题。定义格式为0
列标题-列名
列名 列标题
如果指定的列标题不是标准的标识符格式时,应使用引号定界符,例如,下
列语句使用汉字显示列标题0
昵称-%+#, 电子邮件-,#*
'$#)*
4、删除重复行
语句中使用 或 选项来显示表中符合条件的所有行或删除其中
重复的数据行,默认为 。使用 选项时,对于所有重复的数据行在
返回的结果集合中只保留一行。
5、限制返回的行数
使用 TOP n [PERCENT]选项限制返回的数据行数,TOP n 说明返回 n 行,而 TOP n
PERCENT 时,说明 n 是表示一百分数,指定返回的行数等于总行数的百分之几。
例如0231'$#)*
23421'$#)*
(二)FROM 子句
' 子句指定 语句查询及与查询相关的表或视图。在 ' 子句中最多
可指定 356 个表或视图,它们之间用逗号分隔。
在 FROM 子句同时指定多个表或视图时,如果选择列表中存在同名列,这时应使用对
象名限定这些列所属的表或视图。例如在 usertable 和 citytable 表中同时存在 cityid 列,在查
询两个表中的 cityid 时应使用下面语句格式加以限定:
7$#, %#)*8%