Ⅰ sql语句查询IP段
--先构建一个转换ip地址格式的函数 以‘.’为间隔按4段拆分 每段前端补0 然后截取3位
--可将‘1.1.166.0’转换为‘001001166000’
create function convertIP (@strIP varchar(20))
returns varchar(20)
as
begin
declare @str1 varchar(6),@str2 varchar(6),@str3 varchar(6),@str4 varchar(6),
@i int,@j int,@k int,@m int
set @i=1
set @j=1
set @k=1
set @m=1
while (@i<=len(@strIP))
begin
if (substring(@strIP,@i,1)='.')
begin
if @k=1 set @str1=substring(@strIP,@m,@j-1)
if @k=2 set @str2=substring(@strIP,@m,@j-1)
if @k=3 set @str3=substring(@strIP,@m,@j-1)
set @j=1
set @m=@i+1
set @k=@k+1
end
else
set @j=@j+1
set @i=@i+1
end
set @str4=substring(@strIP,@m,@j-1)
set @str1='000'+@str1
set @str1=substring(@str1,len(@str1)-2,3)
set @str2='000'+@str2
set @str2=substring(@str2,len(@str2)-2,3)
set @str3='000'+@str3
set @str3=substring(@str3,len(@str3)-2,3)
set @str4='000'+@str4
set @str4=substring(@str4,len(@str4)-2,3)
return @str1+@str2+@str3+@str4
end
--查询ip地址为标准格式 例如'201.125.12.203'
select address from IP where dbo.convertIP(IPstart)<=dbo.convert('201.125.12.203') and dbo.convertIP(IPend)>=dbo.convertIP('201.125.12.203')
Ⅱ SQL语句查询
用or把两个条件拼接起来不就行了嘛,还是我没理解对??select ntaxmny as 金额 from so_saleinvoice_b so where so.dbilldate>='2014-01-01' or so.daildate<='2013-01-01'
Ⅲ SqlIn.mdb 这种文件怎么打开查看啊
是一种数据库文件,用Microsoft Office Access就可以打开。
Ⅳ sql server 怎么查询前n条数据
1. Oracle数据库
SELECT * FROM TABLENAME WHERE ROWNUM <= N
2. Infomix数据库
SELECT FIRST N * FROM TABLENAME
3. DB2数据库
SELECT *
FROM (SELECT * ROW_NUMBER() OVER({ORDER BY COL1 DESC}) AS ROWNUM FROM TABLENAME)
WHERE ROWNUM <= N
或者
SELECT COLUMN FROM TABLENAME FETCH FIRST N ROWS ONLY
4. SQL Server数据库
SELECT TOP N * FROM TABLENAME
5. Sybase数据库
SET ROWCOUNT N
GO
SELECT * FROM TABLENAME
6. MySQL数据库
SELECT * FROM TABLENAME LIMIT N
7. FoxPro数据库
SELECT * TOP N FROM TABLENAME ORDER BY COLUMN
以下示例从表 [tableName] 中读取符合查询条件的前10条记录的SQL语句
1.Access
select top (10) * from [tableName] where [query condition]
1.1 带order by的查询限制
Access中对select top的语句支持有限,如果要在查询top语句的后面使用order by,则order by排序字段必须是无重复值,如果有重复值的话,那么这个TOP很可能会失效,会返回所有记录。
解决办法:在order by 最后面加入主键id,如:
select top 10 from [tableName] order by 排序字段1,id
1.2 带子查询的示例
假如id是表[tableName]的主键,以下语句期望返回三条记录,但结果返回4条记录
select top 3 * from [tableName] where id in(是个子查询,结果比如为1,2,3,4)
解决办法
select top 3 * from [tableName] where id in(是个子查询,结果比如为1,2,3,4) order by id
2 DB2
select column from [tableName] where [query condition] fetch first 10 rows only
3 MySQL
select * from [tableName] where [query condition] limit 10
4 SQL Server
4.1 读取前10条
select top (10) * from [tableName] where [query condition]
4.2 读取后10条
select top (10) * from [tableName] order by id desc
4.3 按照某个排序,第5到10这几个记录
select top 6 * from [tableName] where id not in(select top 4 id from [tableName])
5 Oracle
select * from [tableName] where rownum<=10
Ⅳ sql中in函数的用法
IN
操作符
IN
操作符允许我们在
WHERE
子句中规定多个值。
SQL
IN
语法
SELECT
column_name(s)
FROM
table_name
WHERE
column_name
IN
(value1,value2,...)
IN
操作符实例
现在,我们希望从上表中选取姓氏为
Adams
和
Carter
的人:
我们可以使用下面的
SELECT
语句:
SELECT
*
FROM
Persons
WHERE
LastName
IN
('Adams','Carter')
Ⅵ SQL语句查询数表的前n个字段的方法
可以用存储过程+游标实现,直接调用存储过程p1即可:p1 5
create proc p1
@count int
as
begin
declare @cols nvarchar(200)
declare @colname nvarchar(20)
set @cols=''
declare c1 cursor for
select name from syscolumns where id=object_id('t_comp') and colorder <=@count order by colorder
open c1
fetch next from c1 into @colname
while @@fetch_status=0
begin
if @cols=''
set @cols=@colname
else
set @cols=@cols+','+@colname
fetch next from c1 into @colname
end
exec('select '+ @cols +' from t_comp')
close c1
deallocate c1
end
Ⅶ sql 1:N表 查询
select * from a left outer join b on a.关联字段=b.关联字段
Ⅷ Sql查询语句详解
找kfb_cash表里n_lldh不带有重复值的长度为11的第一个n_lldh值
Ⅸ SQL查询怎么返回前N列数据
我来回答吧,我测试了。符合要求。
select top 1 id,成绩 from 你的表 order by id asc
union
select top 1 id, 成绩 from (
select *, 第一个成绩=(
select top 1 成绩 from 你的表 order by id asc) from 你的表
) ttt where 成绩 + 第一个成绩 > 100 order by id asc
Ⅹ 一条sql语句查询N张表
结构相同就可以使用union,
将所有需要查询的表名放在一张单独的表中,遍历这张单独的表,使用动态sql执行