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