志在指尖
用双手敲打未来

sql like通配符(数据库中的like是什么意思)

sqllike通配符

SQLlike对时间查询的处理办法
SQL数据表中有savetime(smalldatetime类型)字段,表中有两条记录,savetime值为:2005-3-812:12:00和2005-6-614:02:02
我用下面句子什么也搜不出来
select*fromsoftwheresoft.savetimelike’%2005-3-8%’
SQL协助中说:
“当查找datetime值时,推荐运用LIKE,由于datetime项或许包括各种日期部分。例如,假如将值199812319:20刺进到名为arrival_time的列中,则子句WHEREarrival_time=9:20将无法找到9:20字符串的精确匹配,由于SQLServer将其转换为1900年1月1日上午9:20。但是,子句WHEREarrival_timeLIKE’%9:20%’将找到匹配。”
后运行下面句子SELECTsoft.*,CAST(soft.savetimeASvarchar(20))ASstrdatetime,发现SQL把smalldatetime格试转成:038200512:12PM
我何用like’%2005-3-8%’查找到2005年3月8日一切的记录?
select*fromsoftwheredatediff(d,soft.savetime,convert(datetime,’20050308′,121))=0
—-
select*fromsoftwhereconvert(char(10),soft.savetime,121)=’20050308′
2.SQL对like操作中的特别字符处理办法:
SQLServer查询过程中,单引号’是特别字符,所以在查询的时分要转换成双单引号”。
在like操作还有以下特别字符:下划线_,百分号%,方括号[],尖号^。
其用处如下:
下划线:用于替代一个恣意字符(相当于正则表达式中的?)
百分号:用于替代恣意数目的恣意字符(相当于正则表达式中的*)
方括号:用于转义(事实上只要左方括号用于转义,右方括号运用最近优先原则匹配最近的左方括号)
尖号:用于排除一些字符进行匹配(这个与正则表达式中的一样)
以下是一些匹配的举例,需要说明的是,只要like操作才有这些特别字符,=操作是没有的。
a_b…a[_]b%
a%b…a[%]b%
a[b…a[[]b%
a]b…a]b%
a[]b…a[[]]b%
a[^]b…a[[][^]]b%
a[^^]b…a[[][^][^]]b%
在实践进行处理的时分,关于=操作,咱们一般只需要如此替换:
‘->”
关于like操作,需要进行以下替换(留意顺序也很重要)
[->[[](这个有必要是第一个替换的!!)
%->[%](这里%是指希望匹配的字符自身包括的%而不是专门用于匹配的通配符)
_->[_]
^->[^]
3,SQLLike通配符特别用法:Escape
论述Escape的作用:
1.运用ESCAPE关键字定义转义符。在形式中,当转义符置于通配符之前时,该通配符就解释为一般字符。例如,要查找在恣意位置包括字符串5%的字符串,请运用:
WHEREColumnALIKE’%5/%%’ESCAPE’/’
但是在mysql中好像不能运用”/”。
2.ESCAPE’escape_character’答应在字符串中查找通配符而不是将其作为通配符运用。escape_character是放在通配符前表示此特别用处的字符。
SELECT*FROMfinancesWHEREdescriptionLIKE’gs_’ESCAPE’S’
意思就是:
比方,咱们要查找一个字符串”g_”,假如直接like”g_”,那么”_”的作用就是通配符,而不是字符,结果,咱们会查到比方”ga”,”gb”,”gc”,而不是咱们需要的”g_”.用LIKE’gs_’ESCAPE’S”s’表示特别用法标志
3.createtablea(namevarchar(10))
go
insertintoaselect’11%22′
unionallselect’11%33′
unionallselect’12%33′
go
select*fromaWHEREnameLIKE’%/%33’ESCAPE’/’–指定用’/’符号来说明跟在这以后面的通配符字符为普能字符。(第二个%是字符不是通配符来的)
go
droptablea
结果为:
name
———-
11%33
12%33
总结:
%:匹配零个及多个恣意字符;_:与恣意单字符匹配;[]:匹配一个范围;[^]:排除一个范围
SymbolMeaning
like’5[%]’5%
like'[_]n’_n
like'[a-cdf]’a,b,c,d,orf
like'[-acdf]’-,a,c,d,orf
like'[[]'[
like’]’]
like’abc[_]d%’abc_dandabc_de
like’abc[def]’abcd,abce,andabcf
like'[^1-9]’0
like'[^1-9b-z]’0,a
关于字符串中呈现的特别字符:’%’,'[‘,'[]’,’_’能够运用'[]’把它们包括起来,这样在匹配形式(pattern)中,它们就被当作一般字符对待了。
1.用like'[[]’匹配特别字符'[‘
select1where'[ABCDE’like'[[]%’
2.用like’]’匹配特别字符’]’
select1where’]ABCDE’like’]%’
3.用like'[[]]’匹配特别字符'[]’
select1where'[]ABCDE’like'[[]]%%’
4.用like'[_]’匹配特别字符’_’
select1where’_ABCDE’like'[_]%’
5.用like'[%]’匹配特别字符’%’
select1where’ABC%DE’like’ABC[%]DE’
关于其他的特别字符:’^’,’-‘,’]’由于它们自身在包括在'[]’中运用,所以需要用另外的方式来转义,于是就引入了like中的escape子句,另外值得留意的是:escape能够转义一切的特别字符。
select1where’^ABCDE’like’!^ABCDE’escape’!’
select1where’-ABCDE’like’!-ABCDE’escape’!’
select1where’]ABCDE’like’!]ABCDE’escape’!’
select1where’%ABCDE’like’/%ABCDE’escape’/’
select1where’%ABCDE’like’!%ABCDE’escape’!’
select1where’%ABCDE’like’#%ABCDE’escape’#’
select1where’%ABCDE’like’@%ABCDE’escape’@’
select1where'[ABCDE’like’![ABCDE’escape’!’
select1where’]ABCDE’like’!]ABCDE’escape’!’
规律就是用escape后面紧跟着的字符来做转义字符。escape后面的字符相当于C语言字符串中的转义字符’/’。
最后,看一个更加复杂的匹配
select1where'[^A-Z]ABCDE’like’/[/^A/-Z/]%’escape’/’sql

数据库中的like是什么意思

在SQL结构化查询语言中,LIKE句子有着至关重要的效果。
LIKE句子的语法格局是:select*from表名where字段名like对应值(子串),它主要是针对字符型字段的,它的效果是在一个字符型字段列中检索包含对应子串的。
假设有一个数据库中有个表table1,在table1中有两个字段,分别是name和sex二者满是字符型数据。现在我们要在名字字段中查询以“张”字开头的记录,句子如下:
select*fromtable1wherenamelike”张*”
如果要查询以“张”结束的记录,则句子如下:
select*fromtable1wherenamelike”*张”
这里用到了通配符“*”,可以说,like句子是和通配符分不开的。下面我们就详细介绍一下通配符。
下面咱们来举例说明一下:
例1,查询name字段中包括有“明”字的。
select*fromtable1wherenamelike’%明%’
例2,查询name字段中以“李”字最初。
select*fromtable1wherenamelike’李*’
例3,查询name字段中含有数字的。
select*fromtable1wherenamelike’%[0-9]%’
例4,查询name字段中含有小写字母的。
select*fromtable1wherenamelike’%[a-z]%’
例5,查询name字段中不含有数字的。
select*fromtable1wherenamelike’%[!0-9]%’
以上例子能列出什么值来清楚明了。但在这儿,咱们着重要说明的是通配符“*”与“%”的区别。
许多朋友会问,为什么我在以上查询时有个别的表明所有字符的时分用”%”而不必“*”?先看看下面的例子能别离呈现什么成果:
select*fromtable1wherenamelike’*明*’
select*fromtable1wherenamelike’%明%’
大家会看到,前一条语句列出来的是所有的记载,而后一条记载列出来的是name字段中含有“明”的记载,所以说,当咱们作字符型字段包括一个子串的查询时最好采用“%”而不必“*”,用“*”的时分只在最初或许只在结尾时,而不能两头全由“*”替代任意字符的情况下。

未经允许不得转载:IT技术网站 » sql like通配符(数据库中的like是什么意思)
分享到: 更多 (0)

评论 抢沙发

评论前必须登录!

 

志在指尖 用双手敲打未来

登录/注册IT技术大全

热门IT技术

C#基础入门   SQL server数据库   系统SEO学习教程   WordPress小技巧   WordPress插件   脚本与源码下载