sql搜索
① sql中 如何搜索‘关键词’
select列1,列2,列3from表名wherenamelike'%关键词%'
name like '%关键词%' 表是 name包含"关键词"3个字。%表示通配符,表示任何字符都适用。
a,like '关键词%' 表示以关键词开头的内容
b,like '%关键词' 表示以关键词结尾的内容
c,like '关键词' 等同于 ='关键词' 的写法,即name是关键词的,你的写法是这样
d,like '%关键词%丽%' 表示like可以包含多个%的通配符
② 怎样在sql里实现中文搜索和模糊搜索
使用SQL 通配符可以替代一个或多个字符,即模糊查询。
SQL 通配符必须与 LIKE 运算符一起使用。在 SQL 中,可使用以下通配符如下:
1、% 替代一个或多个字符
2、_ 仅替代一个字符
3、[charlist] 字符列中的任何单一字符
4、[^charlist]或者[!charlist] 不在字符列中的任何单一字符
以图中表格为例,说明一下各通配符用法
1、 查询居住在以 "Ne" 开始的城市里的人:
SELECT * FROM Persons WHERE City LIKE 'Ne%'
2、查询居住在包含 "lond" 的城市里的人:
SELECT * FROM Persons WHERE City LIKE '%lond%'
3、查询名字的第一个字符之后是 "eorge" 的人:
SELECT * FROM Persons WHERE FirstName LIKE '_eorge'
4、查询记录的姓氏以 "C" 开头,然后是一个任意字符,然后是 "r",然后是任意字符,然后是 "er":
SELECT * FROM Persons WHERE LastName LIKE 'C_r_er'
5、查询居住的城市以 "A" 或 "L" 或 "N" 开头的人:
SELECT * FROM Persons WHERE City LIKE '[ALN]%'
6、查询居住的城市不以 "A" 或 "L" 或 "N" 开头的人:
SELECT * FROM Persons WHERE City LIKE '[!ALN]%'
③ sql模糊查询
模糊查询内容丰富,用起来灵活随便。此处就写出其基本内容。
1,% :表示任意0个或多个字符。可匹配任意类型和长度的字符,有些情况下若是中文,请使用两个百分号(%%)表示。
比如 SELECT * FROM [user] WHERE u_name LIKE '%三%'
将会把u_name为“张三”,“张猫三”、“三脚猫”,“唐三藏”等等有“三”的记录全找出来。
另外,如果需要找出u_name中既有“三”又有“猫”的记录,请使用and条件
SELECT * FROM [user] WHERE u_name LIKE '%三%' AND u_name LIKE '%猫%'
若使用 SELECT * FROM [user] WHERE u_name LIKE '%三%猫%'
虽然能搜索出“三脚猫”,但不能搜索出符合条件的“张猫三”。
2,_ : 表示任意单个字符。匹配单个任意字符,它常用来限制表达式的字符长度语句:
比如 SELECT * FROM [user] WHERE u_name LIKE '_三_'
只找出“唐三藏”这样u_name为三个字且中间一个字是“三”的;
再比如 SELECT * FROM [user] WHERE u_name LIKE '三__';
只找出“三脚猫”这样name为三个字且第一个字是“三”的;
3,[ ] :表示括号内所列字符中的一个(类似正则表达式)。指定一个字符、字符串或范围,要求所匹配对象为它们中的任一个。
比如 SELECT * FROM [user] WHERE u_name LIKE '[张李王]三'
将找出“张三”、“李三”、“王三”(而不是“张李王三”);
如 [ ] 内有一系列字符(01234、abcde之类的)则可略写为“0-4”、“a-e”
SELECT * FROM [user] WHERE u_name LIKE '老[1-9]'
将找出“老1”、“老2”、……、“老9”;
4,[^ ] :表示不在括号所列之内的单个字符。其取值和 [] 相同,但它要求所匹配对象为指定字符以外的任一个字符。
比如 SELECT * FROM [user] WHERE u_name LIKE '[^张李王]三'
将找出不姓“张”、“李”、“王”的“赵三”、“孙三”等;
SELECT * FROM [user] WHERE u_name LIKE '老[^1-4]';
将排除“老1”到“老4”,寻找“老5”、“老6”、……
由于通配符的缘故,导致我们查询特殊字符“%”、“_”、“[”的语句无法正常实现,而把特殊字符用“[ ]”括起便可正常查询。
④ 如何用SQL语句全局搜索
可以通过where条件语句实现。
sql:select * from tablename where name like '张%' and id>5;
解释:以上就是通过条件查询出名字以张开始的,id大于5的表数据。
备注:多条件之间如果是同时满足用and,如果是满足其中一个用 or。
⑤ sql语句实现搜索
你可以先定义一个id,如int id=0;把变化的id的值保存在id里面,再用查询语句,select * from table where id='id'
⑥ SQL 怎么实现模糊查询
1、首先需要开启数据库管理工具,打开SQL语言编写窗体。
⑦ SQL搜索语句
没明白你说的是什么意思
如果你是想通过DropdownList来选择你要搜索的条件值
SQL="select * from tabelName where salaryrange='" + DropdownList.selected.vaules + "'";
⑧ SQL搜索值
目前为止,数据库还是处在有限集合运作方式。不可能达到数学模型那个级别。
提供两种方式:那个好,自己琢磨,数据库SQL2005下调试,一次执行,返回的都是4.
declare @tb table
(
id int identity(1,1),
QNum int
)
declare @tbS table
(
QNum int
)
insert into @tbS
select 1 union all
select 2 union all
select 3 union all
select 6 union all
select 7 union all
select 8 union all
select 10 union all
select 15 union all
select 22
declare @S int set @S=(select min(QNum) from @tbS)
declare @E int set @E=(select max(QNum) from @tbS)
declare @temp int set @temp=1
declare @end int set @end=@E
while @temp<@end
begin
insert into @tb(QNum) values (@temp);
set @temp=@temp+1;
end
select top 1 A.QNum as RetVal from @tb A left join @tbS B on(B.QNum=A.QNum)
where B.QNum is null
order by A.QNum
--以上是一种构建集合方式
--如下是一般的遍历检索
set @temp=1
while @temp<@end
begin
if not exists(select null from @tbS where QNum=@temp)
begin select @temp as RetVal break end
else
begin set @temp=@temp+1 end
end
⑨ SQL如何在搜索结果中再搜索
把搜索结果放到记录集 Recordset 里,然后用记录集的 Filter 属性进行筛选。这样做的好处是更改次要条件时不需要连接数据库。如果没这个需求,当然是按楼上的朋友说的做!
⑩ sql数据库中检索数据
这个可能复杂点,我有一个方案,
首先做一个自定义方法,然后进行查询
-----自定义方法------
CREATE FUNCTION SplitStr (@splitString varchar(8000), @separate varchar(10))
RETURNS @returnTable table(col_Value varchar(20))
AS
BEGIN
declare @thisSplitStr varchar(20)
declare @thisSepIndex int
declare @lastSepIndex int
set @lastSepIndex = 0
if Right(@splitString ,len(@separate)) <> @separate set @splitString = @splitString + @separate
set @thisSepIndex = CharIndex(@separate,@splitString ,@lastSepIndex)
while @lastSepIndex <= @thisSepIndex
begin
set @thisSplitStr = SubString(@splitString ,@lastSepIndex,@thisSepIndex-@lastSepIndex)
set @lastSepIndex = @thisSepIndex + 1
set @thisSepIndex = CharIndex(@separate,@splitString ,@lastSepIndex)
insert into @returnTable values(@thisSplitStr)
end
return
END
---------测试语句--------
select * from
(
select 'a,b,c,a,d' as b
union all
select 'c,f,d,e,t'
union
select 'd,d,f,g,h'
) as a
where
(select COUNT(1)
from
dbo.SplitStr(b,',')
group by col_Value
having COUNT(1)>1)>0
--------查询结果--------
a,b,c,a,d
d,d,f,g,h