sql类似
‘壹’ sql语言中是否有类似于C语言的for语句
标准的sql是没有的,但好多数据库它自己集成了自己的sql,这部分语句大多都有循环和条件等常用语句!建议你用的什么数据库在查相关语句!
‘贰’ 关于SQL中如何比较方便的查询多个类似的字段
那就得动态拼接字符串了,比如 select a.name from sys.columns as a join sys.tables as b on a.object_id = b.object_id and b.name = '你的表名' 以上脚本SQL2008可用。
‘叁’ SQL中有没有类似sleep的延时函数
SQL有定时执行的语句 WaitFor,可以写到一个存储过程中再执行一次
语法:WaitFor{Delay 'time'|Time 'time}
Delay后面的时间为延迟多少时间执行
Time后面的时间为指定何时执行,格式为"HH:MM:SS",不支持日期
例:
------指定10:00执行
Begin
waitfor time '10:00'
select * from tablename
end
-----指定等待1小时后执行
begin
waitfor delay '1:00'
select * from tablename
end
dbms_lock.sleep(n)暂停n秒后执行
一般这个包都会创建,但是权限不是默认就赋予的;还有一个重要的步骤是要给用户all on dbms_lock 权限。。
在DBA身分下
grant execute on dbms_lock to USERNAME;
放到存贮过程里
1.WAITFOR
--WAITFOR
--例 等待1 小时2 分零3 秒后才执行SELECT 语句
waitfor delay '01:02:03'
select * from employee
--例 等到晚上11 点零8 分后才执行SELECT 语句
waitfor time '23:08:00'
select * from employee
‘肆’ SQL类似京东淘宝产品属性的筛选功能
select PID,max(case when 类别 = '品牌' then name else '' end) 品牌,
max(case when 类别 = '接口' then name else '' end) 接口
from Goods_Attribute a join 属性表 b
on a.AID = b.AID
group by a.PID
如果属性可以随意增加,则根据属性做游标,拼出上面的语句。
declare @sql varchar(max)
declare @c_类别 varchar(100)
set @sql = 'select PID,'
declare cur_属性 cursor for
select distinct 类别 from 属性表
open cur_属性
fetch cur_属性 into @c_类别
while @@FETCH_STATUS = 0
begin
set @sql = @sql + 'max(case when 类别 = ''' + @c_类别 + ''' then name else '''' end) ' + @c_类别 + ','
fetch cur_属性 into @c_类别
end
close cur_属性
deallocate cur_属性
set @sql = @sql + '1 noshow from Goods_Attribute a join 属性表 b on a.AID = b.AID group by a.PID '
exec ( @sql )
‘伍’ sql如何实现类似统计的功能
SQL中没有直接提供这种按组查询的方法,你可以去写可存储过程或者自定义函数去实现,很简单,也就3到4行就行,如果选出包含english的可以使用SQL中的字符串匹配函数去找english这个字符串,只需要让这个得出的值大于0就认为他找到对应的字符串了。
如果还不明联系我
我写具体的存储过程给你
‘陆’ sql 一个类似like的查询
这个简单的!假设你的user表 字段为 num 的值1000,10001,4444,2111
可这样
select * from (select * from user where num like'%1000%')A
where A.num not like'%10001%'
或者
select * from user where num like'%1000%' and
num not like'%10001%'
‘柒’ sql如何实现类似统计的功能
很幸运的是MYSQL也有这个函数
SELECT class_No,GROUP_CONCAT(course_Name)
FROM Class
GROUP BY class_No
‘捌’ PL/SQL的类似语言
功能近似PL/SQL的程序语言和其他关系型数据库:
SybaseASE、Microsoft SQL Server的Transact-SQL,PostgreSQL数据库的PL/pgSQL(模仿PL/SQL)和IBM DB2的SQL PL,都符合ISOSQL的SQL/PSM标准。
‘玖’ sql中类似循环方法语句怎么写急!急
create table a_lyh_test
as
select 'A' as "字段1" , 500 as "字段2" from al
union all
select 'B' as "字段1" , 300 as "字段2" from al
union all
select 'B' as "字段1" ,400 as "字段2" from al
union all
select 'B' as "字段1" , 600 as "字段2" from al
union all
select 'A' as "字段1" , 200 as "字段2" from al
;
select f.字段1
,ltrim(max(sys_connect_by_path(f.字段2,','))
keep (dense_rank last order by f.pnum),',') as 字段2
from
(
select t.字段1
,t.字段2
,row_number() over(partition by t.字段1 order by t.字段1) as pnum
,row_number() over(partition by t.字段1 order by t.字段1)-1 as lnum
from
(
select a.字段1,a.字段2
from a_lyh_test a
) t
) f
group by f.字段1
connect by f.lnum = prior f.pnum and f.字段1 = prior f.字段1
start with f.pnum = 1;
‘拾’ sql怎样完成类似数据透视表那样的功能
这个建议另建一张表,按照最终需求的表结构建好表3,然后
insert into 表3(姓名,学号) as select 姓名,学号 from 表1;
update 表3 set 数学=表2.score from 表2,表3 where 表2.学号=表3.学号 and 表2.subject=数学;
update 表3 set 语文=表2.score from 表2,表3 where 表2.学号=表3.学号 and 表2.subject=语文;
抱歉大概意思明白吧,字段名我没仔细对哈。