declare @str varchar(max)='6688 sasaaaa wty',@sql varchar(max)
创新互联公司专注于涉县网站建设服务及定制,我们拥有丰富的企业做网站经验。 热诚为您提供涉县营销型网站建设,涉县网站制作、涉县网页设计、涉县网站官网定制、小程序定制开发服务,打造涉县网络公司原创品牌,更为您提供涉县网站排名全网营销落地服务。
set @sql='select * from mingTest where 1=0 '
;with cte as(select name=SUBSTRING(A.[str],number,CHARINDEX(' ',A.[str]+' ',number)-number) from A JOIN master..spt_values ON type='p' and number between 1 and LEN(@str)
WHERE CHARINDEX(' ',' '+A.[str],number)=number)
select @sql=@sql+'or [str] like ''%'+name+'%''' from cte where name''
EXEC @sql
可以用左连接(left join)查询出未匹配的数据。原理是左连接时,将输出左表的所有记录,如果右表没有匹配的记录,则用null替代右表的字段值,这样在where子句里筛选出这些右表字段值为null记录,即可查询出未匹配的数据。请参考下列实例:
查出没有参加课程号为"A01"考试的学生资料
数据结构
student(sid,sname)
score(sid,cid,grade)
SQL语句
select a.* from student a left join
(select distinct sid from score where cid='A01') b
on a.sid=b.sid where b.sid is null;
按下面语句查询:
select Time from table1 where CONVERT(CHAR(100), Time, 111) like '2012/11%';
问题解决,记得采纳。
SqlServer英文单词全字匹配
环境:Vs2013+Sql
Server2012
问题:现在数据库记录如下:
Sentence列保存的是英文的句子,我现在想找出所有包含“I”(单词)的句子,如果我用
Sentence
like
'%I',作为条件的话,那么像上图选中的那条有个单词“it“(不区分大小写的情况下),它也会被Select出来,而我只想找出含有“I”这个单词的句子的记录。
解决:SqlServer提供了模式匹配,类似于正则,详细内容查阅相关文档。
我先写了一个这样的条件:
Sentence
like
'%[^a-zA-Z]I[^a-zA-Z]%'
发现上图里的第一条,也就是“I
would...",“I”开头的单词没有被Select出来,也就是说,这个条件所匹配的是前面要一个非字母的符号(没有字符是不可以的),那么同样道理,最后面也需要一个非字母的符号(没有字符也是不可以的),所以可改成:
Sentence
like
'%[^a-zA-Z]I[^a-zA-Z]%'
or
Sentence
like
'I[^a-zA-Z]%'
or
Sentence
like
'%[^a-zA-Z]I'
不过感觉这样比较麻烦,如果把Sentence前后各加一个非字母的数字,像原本“I
would
like
I",把它变成“
I
would
like
I
"(前后各加一个空格),这样就能匹配最开始写的那个条件了:
'
'+Sentence+'
'
like
'%[^a-zA-Z]I[^a-zA-Z]%'
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!
DECLARE@strASVARCHAR(25)='123_234_567'selectsubstring(@str,1,LEN(@str)-CHARINDEX('_',reverse(@str)))输出123_234DECLARE@strASVARCHAR(25)='123_234_567'selectreverse(substring(reverse(@str),1,charindex('_',reverse(@str))-1))输出567。
SQL是英文StructuredQueryLanguage的缩写,意思为结构化查询系统。SQL语言的主要功能就是同各种数据库建立联系,进行沟通。按照ANSI(美国国家标准协会)的规定,SQL被作为关系型数据库管理系统的标准语言。SQLServer是由Microsoft开发和推广的关系数据库管理系统(RDBMS)。
前提得有权限。首先全文目录 然后全文索引。
USE 你的数据库;
GO
CREATE UNIQUE INDEX 唯一索引名 ON 表名(字段);
CREATE FULLTEXT CATALOG 全文索引目录名 AS DEFAULT;--把新建的设为默认全文目录,除非特别说明以后全文索引都默认使用此目录
CREATE FULLTEXT INDEX ON 表名(字段)
KEY INDEX 上面创建的唯一索引
WITH STOPLIST = SYSTEM;--干扰词列表使用系统默认的
GO