sql 多条件模糊查询询float条件

二次元同好交流新大陆
扫码下载App
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!&&|&&
LOFTER精选
网易考拉推荐
用微信&&“扫一扫”
将文章分享到朋友圈。
用易信&&“扫一扫”
将文章分享到朋友圈。
阅读(4532)|
用微信&&“扫一扫”
将文章分享到朋友圈。
用易信&&“扫一扫”
将文章分享到朋友圈。
历史上的今天
loftPermalink:'',
id:'fks_',
blogTitle:'SQL Server dateTime类型 模糊查询',
blogAbstract:'
日期格式的like模糊查询真的好怪,在一个项目中,我试了很多种查法:
select * from T where sendTime like \'%2007_12_%\'&&& 可以查询2007年12月的所有记录
如果like条件改为\'%2007-12-%\'&,\'%%\'&,或\'%%\'&都查不出数据。还有:
select * from T where sendTime like \'%12_30%\'&&& 可以查询12月30日的所有记录',
blogTag:'',
blogUrl:'blog/static/9',
isPublished:1,
istop:false,
modifyTime:6,
publishTime:9,
permalink:'blog/static/9',
commentCount:0,
mainCommentCount:0,
recommendCount:0,
bsrk:-100,
publisherId:0,
recomBlogHome:false,
currentRecomBlog:false,
attachmentsFileIds:[],
groupInfo:{},
friendstatus:'none',
followstatus:'unFollow',
pubSucc:'',
visitorProvince:'',
visitorCity:'',
visitorNewUser:false,
postAddInfo:{},
mset:'000',
remindgoodnightblog:false,
isBlackVisitor:false,
isShowYodaoAd:false,
hostIntro:'',
hmcon:'0',
selfRecomBlogCount:'0',
lofter_single:''
{list a as x}
{if x.moveFrom=='wap'}
{elseif x.moveFrom=='iphone'}
{elseif x.moveFrom=='android'}
{elseif x.moveFrom=='mobile'}
${a.selfIntro|escape}{if great260}${suplement}{/if}
{list a as x}
推荐过这篇日志的人:
{list a as x}
{if !!b&&b.length>0}
他们还推荐了:
{list b as y}
转载记录:
{list d as x}
{list a as x}
{list a as x}
{list a as x}
{list a as x}
{if x_index>4}{break}{/if}
${fn2(x.publishTime,'yyyy-MM-dd HH:mm:ss')}
{list a as x}
{if !!(blogDetail.preBlogPermalink)}
{if !!(blogDetail.nextBlogPermalink)}
{list a as x}
{if defined('newslist')&&newslist.length>0}
{list newslist as x}
{if x_index>7}{break}{/if}
{list a as x}
{var first_option =}
{list x.voteDetailList as voteToOption}
{if voteToOption==1}
{if first_option==false},{/if}&&“${b[voteToOption_index]}”&&
{if (x.role!="-1") },“我是${c[x.role]}”&&{/if}
&&&&&&&&${fn1(x.voteTime)}
{if x.userName==''}{/if}
网易公司版权所有&&
{list x.l as y}
{if defined('wl')}
{list wl as x}{/list}1596人阅读
数据库(29)
------------------第一种方法----------------------
CREATE PROC sp_ValueSearch
@value sql_variant,& --要搜索的数据
@precision bit=1&&&& --1=仅根据sql_variant中的数据类型查找对应类型的数据列.&&1,查询兼容的所有列,字符数据使用like匹配
SET NOCOUNT ON
IF @value IS NULL RETURN
--数据类型处理
SELECT xtype INTO #t FROM systypes
WHERE name=SQL_VARIANT_PROPERTY(@value,N'BaseType')
--扩展数据类型及查询处理语句
DECLARE @sql nvarchar(4000),@sql1 nvarchar(4000)
IF @precision=1
&&& SET @sql=CASE SQL_VARIANT_PROPERTY(@value,N'BaseType')
&&&&&&& WHEN N'text' THEN N' LIKE N''%''+CAST(@value as varchar(8000))+''%'''
&&&&&&& WHEN N'ntext' THEN N' LIKE ''%''+CAST(@value as nvarchar(4000))+''%'''
&&&&&&& ELSE&&END
&&& SET @sql=CAST(SQL_VARIANT_PROPERTY(@value,N'BaseType') as sysname)
&&& IF @sql LIKE N'%char' or @sql LIKE N'%text'
&&&&&&& INSERT #t SELECT xtype FROM systypes
&&&&&&& WHERE name LIKE N'%char' or name LIKE N'%text'
&&&&&&& SELECT @sql=N' LIKE N''%''+CAST(@value as '
&&&&&&&&&&& +CASE&
&&&&&&&&&&&&&&& WHEN LEFT(@sql,1)=N'n' THEN ' nvarchar(4000)'
&&&&&&&&&&&&&&& ELSE 'varchar(8000)' END
&&&&&&&&&&& +N')+N''%'''
&&& ELSE IF @sql LIKE N'%datetime'
&&&&&&& INSERT #t SELECT xtype FROM systypes
&&&&&&& WHERE name LIKE N'%datetime'
&&&&&&& SET @sql=N'=@value'&&&&
&&& ELSE IF @sql LIKE N'%int'&
&&&&&&& OR @sql LIKE N'%money'&
&&&&&&& OR @sql IN(N'real',N'float',N'decimal',N'numeric')
&&&&&&& INSERT #t SELECT xtype FROM systypes
&&&&&&& WHERE name LIKE N'%int'&
&&&&&&&&&&& OR name LIKE N'%money'&
&&&&&&&&&&& OR name IN(N'real',N'float',N'decimal')
&&&&&&& SET @sql=N'=@value'&&&&
&&&&&&& SET @sql=N'=@value'
--保存结果的临时表
CREATE TABLE #(TableName sysname,FieldName sysname,Type sysname,SQL nvarchar(4000))
DECLARE tb CURSOR LOCAL
SELECT N'SELECT * FROM '
&&& +QUOTENAME(USER_NAME(o.uid))
&&& +N'.'+QUOTENAME(o.name)
&&& +N' WHERE '+QUOTENAME(c.name)
&&& N'INSERT # VALUES(N'+QUOTENAME(o.name,N'''')
&&& +N',N'+QUOTENAME(c.name,N'''')
&&& +N',N'+QUOTENAME(QUOTENAME(t.name)+CASE&
&&&&&&& WHEN t.name IN (N'decimal',N'numeric')
&&&&&&& THEN N'('+CAST(c.prec as varchar)+N','+CAST(c.scale as varchar)+N')'
&&&&&&& WHEN t.name=N'float'
&&&&&&&&&&& OR t.name like N'%char'
&&&&&&&&&&& OR t.name like N'%binary'
&&&&&&& THEN N'('+CAST(c.prec as varchar)+N')'
&&&&&&& ELSE N'' END,N'''')
&&& +N',@sql)'
FROM sysobjects o,syscolumns c,systypes t,#t tt
WHERE o.id=c.id
&&& AND c.xusertype=t.xusertype
&&& AND t.xtype=tt.xtype
&&& AND OBJECTPROPERTY(o.id,N'IsUserTable')=1
FETCH tb INTO @sql,@sql1
WHILE @@FETCH_STATUS=0
&&& SET @sql1=N'IF EXISTS()&
&&& EXEC sp_executesql @sql1,N'@value sql_variant,@sql nvarchar(4000)',@value,@sql
&&& FETCH tb INTO @sql,@sql1
DEALLOCATE tb
SELECT * FROM #
exec sp_ValueSearch '要搜索的值',1 --1或不输入(即默认值1)精确匹配
exec sp_ValueSearch '要搜索的值',0 --不等于1,模糊匹配
---------------第二种方法------------------
Create&& PROC xb_GetTableNameAndColNameForValue
&@value varchar(200)
--求test库中包含值为@value的表和列名
--存储表名和列名
IF object_id('tabss') IS NOT NULL&
&exec('drop table tabss')
CREATE TABLE Tabss(id int identity(1,1),tabname varchar(100),colName varchar(100))
--查询某表某列是否包含某个值
IF object_id('ysgs') IS NOT NULL
&exec('drop proc ysgs')
exec('create PROC ysgs(@tab varchar(100),@col varchar(100))
exec(''select 1 from&&where&&like&)
--将结果存入tabss表中
EXEC master.dbo.xp_execresultset 'SELECT ''exec ysgs ''''''+object_name(id)+'''''',''''''+name+'''''';if @@rowcount&0& insert tabss (colname,tabname)values(''''''+name+'''''',''''''+object_name(id)+'''''')'' FROM syscolumns s WHERE xtype in(SELECT xtype FROM
systypes s2 WHERE name in(''char'',''varchar'',''nchar'',''nvarchar''))
AND id in(SELECT id FROM sysobjects s2 WHERE xtype=''u'')',N'test'
exec xb_GetTableNameAndColNameForValue 'aa_1'
SELECT * FROM tabss
------------------------第三种方法---------------------
declare @name nvarchar(100)
declare cur cursor for select name from sysobjects where type = 'U'
fetch next from cur into @name
WHILE @@FETCH_STATUS = 0
&&& declare @sql nvarchar(500),@s varchar(500)
&&& set @s =''
&&& set @sql='select @s=isnull(@s+''+'','''')+'''''',''''''+''+cast(''+name+'' as varchar)'' from syscolumns where id=object_id() and xtype in(175,239,99,231,35,167)
&&& exec sp_executesql @sql,N'@s varchar(500) out',@s out
&&& if len(@s) & 0&
&&&&&&& exec ('if exists(select 1 from (select '+ @s+' as col from ['+@name+']) b where charindex(''aa'',col)&0) print)
&&& fetch next from cur into @name
DEALLOCATE cur
------第4种方法---------(来自小梁)
CREATE&TABLE&tb(id&int,col&varchar(20))
CREATE&TABLE&tb2(id&int,data&varchar(20))
INSERT&tb&VALUES(1,'中国');
INSERT&tb&VALUES(2,'liangck')
INSERT&tb2&VALUES(1,'China')
CREATE&PROCEDURE&dbo.FindString
&&&&@string&NVARCHAR(100)
&&&&DECLARE&@SQL&NVARCHAR(4000);
&&&&SET&@SQL&=&N'
&&&&&&&&&&& DECLARE @str NVARCHAR(4000);
&&&&&&&&&&& SELECT
&&&&&&&&&&&&&&& @str = ISNULL(@str + N''&OR&''&+ c.name + N''&LIKE
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&+&@string&+&'&%'''''',
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& c.name + N''&LIKE N''''%'&+&@string&+'%'''''')
FROM syscolumns AS c JOIN systypes AS t ON c.id=OBJECT_ID(''?'')
&&&&&&&&&&&&&&& AND c.xtype=t.xtype
&&&&&&&&&&&&&&& AND t.name IN(''varchar'',''char'',''nvarchar'',''nchar'');
&&&&&&&&&&& SET @str =&''SELECT TOP 1 1 FROM ? WHERE&''+@
&&&&&&&&&&& CREATE TABLE #tb(a int);
&&&&&&&&&&& INSERT #tb(a) EXEC(@str);
&&&&&&&&&&& IF EXISTS(SELECT * FROM #tb)
&&&&&&&&&&&&&&& PRINT&''?''
&&&&&&&&';
&&&&EXEC&sp_MsforeachTable&@SQL;
EXEC&dbo.FindString N'中国'
DROP&PROCEDURE&dbo.FindString
DROP&TABLE&tb,tb2
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:319764次
积分:5913
积分:5913
排名:第2759名
原创:248篇
转载:120篇
评论:38条
(1)(3)(4)(1)(1)(1)(2)(1)(1)(1)(2)(4)(8)(1)(2)(1)(10)(2)(3)(2)(6)(6)(1)(4)(2)(2)(8)(1)(2)(2)(6)(3)(1)(9)(8)(3)(1)(3)(4)(1)(4)(1)(1)(2)(1)(1)(5)(4)(11)(3)(3)(2)(8)(5)(1)(3)(1)(2)(3)(2)(2)(3)(2)(3)(3)(7)(16)(6)(10)(6)(3)(5)(4)(7)(12)(12)(1)(17)(19)(16)(15)(14)(3)
() () () () () () () () () () () () () ()
() () () () () () () () () () () () ()
() () () () () ()
() () () () () () () () () () () () () () () () () () () () () () ()<a href="http://www.
() () () () () () () () ()SQL语句语法_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
SQL语句语法
上传于||文档简介
&&S&#8203;Q&#8203;L&#8203;语&#8203;句&#8203;语&#8203;法
阅读已结束,如果下载本文需要使用5下载券
想免费下载本文?
下载文档到电脑,查找使用更方便
还剩7页未读,继续阅读
你可能喜欢SQL标准和规范1_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
<span class="g-ico g-ico-star g-ico-star-on" style="width:%">
<span class="g-ico g-ico-star g-ico-star-on" style="width:%">
<span class="g-ico g-ico-star g-ico-star-on" style="width:%">
SQL标准和规范1
上传于||文档简介
&&o&#8203;r&#8203;a&#8203;c&#8203;l&#8203;e&#8203; &#8203;p&#8203;l&#8203;s&#8203;q&#8203;l&#8203; &#8203;d&#8203;e&#8203;v&#8203;e&#8203;l&#8203;o&#8203;p&#8203;e&#8203;r
阅读已结束,如果下载本文需要使用0下载券
想免费下载更多文档?
下载文档到电脑,查找使用更方便
还剩10页未读,继续阅读
你可能喜欢trackbacks-0
SQL Server 是Microsoft 公司推出的关系型数据库管理系统。具有使用方便可伸缩性好与相关软件集成程度高等优点,可跨越从运行Microsoft Windows 98 的膝上型电脑到运行Microsoft Windows 2012 的大型多处理器的服务器等多种平台使用。 Microsoft SQL Server 是一个全面的数据库平台,使用集成的商业智能 (BI)工具提供了企业级的数据管理。Microsoft SQL Server 数据库引擎为关系型数据和结构化数据提供了更安全可靠的存储功能,使您可以构建和管理用于业务的高可用和高性能的数据应用程序。
简单点一句话概括: 数据是具有一定意义的数字、字母、符号的统称,数据库就是存放数据的
vSql(Structured Query Language) server基础
1.Sql server的组成:
主要数据库文件:.mdf 特点:有且只有一个
次要数据库文件:.ndf 特点:任意个
日志数据库文件:.ldf 特点:至少一个
2.操作数据库:
创建数据库:create databse 库名
查看所有数据库:exec sp_helpdb
查看当前数据库:exec sp_helpdb 库名
使用数据库:use 库名
删除数据库:drop database 库名 ps:正在使用的数据库无法删除
3.表的结构: 字段 数据类型(属性)
4.数据类型:
微整型 tinyint 1个字节
小整型 smallint 2个字节
整型 int 4个字节
大整型 bigint 8个字节
float 不能精确存储数值
real 不能精确存储数值
decimal(numeric ) 同义,用于精确存储数值
char 长度在1到8000之间 定长字符数据
varchar 长度在1到8000之间 变长字符数据
text 存储可变长度的非Unicode数据,最大长度为2^31-1(2,147,483,647)个字符
时间日期型:datetime 年月日时分秒毫秒
货币型:money 精确到货币单位的千分之十。存储大小为 8 个字节。存储形式为12345.67
vsql server表
1.创建表的语法:
create table 表名
字段名称1 数据类型[属性],
字段名称2 数据类型[属性],
2.查看所有表语法: exec sp_help
3.查看当前表语法: exec sp_help 表名
4.修改表结构:
增加一列语法:alter table 表名 add 字段名 数据类型
删除一列语法:alter table 表名 drop column 字段名
修改一列语法:alter table 表名 alter column 字段名 数据类型
删除表语法:drop table 表名
5.操作表数据:
完全插入数据语法:insert into 表名(字段名1,字段名2...) values(值1,值2...)
省略插入数据语法:insert into 表名 values(值1,值2...)
部分插入数据语法:insert into 表名(字段名1,字段名2...) values(值1,值2...)
多行插入数据语法:insert into 表名 values(值1,值2...),(值1,值2...)
查看所有记录语法:select * from 表名
查看部分记录语法:select 字段名1,字段名2... from 表名
修改一条记录语法:update 表名 set 字段名=值 [where条件]
删除一条记录语法:delete from 表名 where 条件
清空表所有记录
delete from 表名
truncate from 表名 ps:至于他们的区别,我就不多介绍了,有兴趣的可以看这里SQL Server中truncate、delete和drop的异同点
6.标识列 identity(初值,增值):
定义:能唯一区分表中的每一条记录,且该属性是自动增长的
一个表中有且只有一个标识列
标识列不能编辑,不能更新
标识列数据类型只能是整型
标识列不为null
标识列不重复
作用:保证数据完整性
7.运算符:
sql server的运算符与其他语言不同,这里列举三个
&&-----and
8.六大约束:
检查约束 check 语法 check(条件)
默认约束 default 语法 default'默认语句'
非空约束 not null
唯一性约束 unique
主键 primary key
主键的值不能重复
一个表中有且只有一个主键
外键与主键相对应
主键类型可以是整型、字符型
语法:字段名 数据类型 primary key
外键 foreign key references
与主键相对应
外键的值一定在主键范围之内
外键的值可以重复
语法:字段名 数据类型 foreign key references 主表名
注意事项:
在操作主表从表时:先删除从表,再删除主表,删除数据,也要先从后主
在建立表时:要先创建主表,再创建从表,插入数据,先主后从
vsql server查询
1.查询符合条件的数据: select 字段名 from 表名 [where 条件]
and ... or
between ... and
例句:查询23岁到25岁之间的学生
select * from student where age&=23 and age&=25
select * from student where age between 23 and 25
3.不显示重复项:distinct select distinct 字段名 from 表名
4.前几项 top select top n * from 表名
5.排序 order by + 字段名 asc升序 desc降序(默认情况下为升序) select * from student where age&25 order by name desc
is not null/null select * from 表名 where 字段名 is null
7.列起别名as select id as 学生编号, name as 学生姓名 from student as a 注:实际语法中as可以省略
8.高级查询(模糊查询) like select 字段名 from 表名 where 字段名 like '通配符 值 通配符'
sql server 通配符
% 任意字符
[]范围内任意字符
[^]非范围内任意字符
9.联合查询 join
交叉查询:select 字段名 from 表1 cross join 表2 [where 条件]
内连接查询:select 字段名 from 表1 inner join 表2 on 联合条件 [where 条件]
左外连接:select 字段名 from 表1 left join 表2 on 联合条件 [where 条件]
右外连接:select 字段名 from 表1 right join 表2 on 联合条件 [where 条件]
全外连接:select 字段名 from 表1 full join 表2 on 联合条件 [where 条件]
多表连接:select 字段名 from 表1 inner join 表2 on 联合条件 inner join 表3 on 联合条件 [where 条件]
10.嵌套查询(嵌套查询都可以用联合查询完成),显示的字段在一个表中,条件在另外一个表中
in() 在...范围之内的
not in() 不在...范围之内的
exists 存在
not exists 不存在
分组 group by
1.统计(聚合)函数
Transact-SQL编程语言提供下列聚合函数:
AVG 返回指定组中的平均值,空值被忽略。
例:select prd_no,avg(qty) from sales group by prd_no
COUNT 返回指定组中项目的数量。
例:select count(prd_no) from sales
MAX 返回指定数据的最大值。
例:select prd_no,max(qty) from sales group by prd_no
MIN 返回指定数据的最小值。
例:select prd_no,min(qty) from sales group by prd_no
SUM 返回指定数据的和,只能用于数字列,空值被忽略。
例:select prd_no,sum(qty) from sales group by prd_no
COUNT_BIG 返回指定组中的项目数量,与COUNT函数不同的是COUNT_BIG返回bigint值,而COUNT返回的是int值。
例:select count_big(prd_no) from sales
GROUPING 产生一个附加的列,当用CUBE或ROLLUP运算符添加行时,输出值为1.当所添加的行不是由CUBE或ROLLUP产生时,输出值为0.
例:select prd_no,sum(qty),grouping(prd_no) from sales group by prd_no with rollup
BINARY_CHECKSUM 返回对表中的行或表达式列表计算的二进制校验值,用于检测表中行的更改。
例:select prd_no,binary_checksum(qty) from sales group by prd_no
CHECKSUM_AGG 返回指定数据的校验值,空值被忽略。
例:select prd_no,checksum_agg(binary_checksum(*)) from sales group by prd_no
CHECKSUM 返回在表的行上或在表达式列表上计算的校验值,用于生成哈希索引。
STDEV 返回给定表达式中所有值的统计标准偏差。
例:select stdev(prd_no) from sales
STDEVP 返回给定表达式中的所有值的填充统计标准偏差。
例:select stdevp(prd_no) from sales
VAR 返回给定表达式中所有值的统计方差。
例:select var(prd_no) from sales
VARP 返回给定表达式中所有值的填充的统计方差。
例:select varp(prd_no) from sales
2.日期函数
getDate()获取当前时间
Dateadd() 增加时间
datediff(datepart,startdate,enddate)
startdate 和 enddate 参数是合法的日期表达式。
datepart 参数可以是下列的值:
datepart 缩写
年 yy, yyyy
季度 qq, q
年中的日 dy, y
星期 dw, w
分钟 mi, n
datepart(datepart,date)函数用于返回日期/时间的单独部分,比如年、月、日、小时、分钟等等,datepartd参数可以参见上表
datename(datepart,date)傳回代表指定 date 之指定 datepart 的字元字串
3.数学函数
abs()取绝对值
round()四舍五入
floor()函数返回小于或等于所给数字表达式的最大整数
ceiling()函数返回大于或等于所给数字表达式的最小整数
sqrt()开平方根
关于abs()/round()/...这些数学函数的demo可以在我的上篇博客中找到
4.字符串函数
left()左截串
right()右截串
ltrim()去左空格
rtrim()去右空格
replace(字符串,旧字符串,新字符串) 替换
substring(字符串,位置,长度) 截字符串 ps:sql中字符串下标从1开始
reverse()反转
upper()转大写
lower()转小写
1.声明变量语法: declare @变量名 数据类型
给变量赋值
set @变量名=值
select @变量名=值
输出变量 select @变量名
ps:若想输出变量、声明变量、变量赋值和变量输出三条语句需一起执行
2.编程语句
begin...end
1.创建视图
create view 视图名称
sql中查询语句
2.使用视图 select * from 视图名
3.查看视图 exec sp_help
4.查看视图内容 exec sp_helptext 视图名
5.修改视图 alter view 视图名 as select * from 表名 [where条件]
6.删除视图 drop view 视图名
7.修改视图 update 视图名 set 字段名=值 [where条件]
v存储过程/触发器/事务
1.sql server 存储过程
create proc | procedure pro_name
[} [=默认值] [output],
} [=默认值] [output],
select ......
2.sql server 触发器
insert触发器
update触发器
delete触发器
关于sql server 触发器这里就不多介绍了,更多详情大家有兴趣可以看这里
3.sql server 事务
关于sql server 事务这里就不多介绍了,更多详情大家有兴趣可以看这里
阅读(...) 评论()

我要回帖

更多关于 sql float 类型条件 的文章

 

随机推荐