mysql字段模糊怎么查 數(shù)據(jù)庫(kù)字段模糊查詢

MYSQL模糊查詢問(wèn)題

不知道你要干嘛,但是下面是我的解決辦法

為撫州等地區(qū)用戶提供了全套網(wǎng)頁(yè)設(shè)計(jì)制作服務(wù),及撫州網(wǎng)站建設(shè)行業(yè)解決方案。主營(yíng)業(yè)務(wù)為網(wǎng)站建設(shè)、網(wǎng)站設(shè)計(jì)、撫州網(wǎng)站設(shè)計(jì),以傳統(tǒng)方式定制建設(shè)網(wǎng)站,并提供域名空間備案等一條龍服務(wù),秉承以專業(yè)、用心的態(tài)度為用戶提供真誠(chéng)的服務(wù)。我們深信只要達(dá)到每一位用戶的要求,就會(huì)得到認(rèn)可,從而選擇與我們長(zhǎng)期合作。這樣,我們也可以走得更遠(yuǎn)!

首先用 SHOW TABLES 語(yǔ)句顯示所有的數(shù)據(jù)庫(kù)名,然后逐漸遍歷這個(gè)數(shù)組,用 SHOW COLUMNS 顯示每個(gè)表的字段。最后你用 strpos 判斷每個(gè)字段名稱是否包含你要查找的數(shù)據(jù)

如何用MYSQL模糊查詢···

SQL模糊查詢的語(yǔ)法為

“SELECT column FROM table WHERE column LIKE ';pattern';”。

SQL提供了四種匹配模式:

1. % 表示任意0個(gè)或多個(gè)字符。如下語(yǔ)句:

SELECT * FROM user WHERE name LIKE ';%三%';

將會(huì)把name為“張三”,“三腳貓”,“唐三藏”等等有“三”的全找出來(lái);

2. _ 表示任意單個(gè)字符。語(yǔ)句:

SELECT * FROM user WHERE name LIKE ';_三_';

只找出“唐三藏”這樣name為三個(gè)字且中間一個(gè)字是“三”的;

SELECT * FROM user WHERE name LIKE ';三__';

只找出“三腳貓”這樣name為三個(gè)字且第一個(gè)字是“三”的;

3. [ ] 表示括號(hào)內(nèi)所列字符中的一個(gè)(類似與正則表達(dá)式)。語(yǔ)句:

SELECT * FROM user WHERE name LIKE ';[張李王]三';

將找出“張三”、“李三”、“王三”(而不是“張李王三”);

如 [ ] 內(nèi)有一系列字符(01234、abcde之類的)則可略寫為“0-4”、“a-e”

SELECT * FROM user WHERE name LIKE ';老[1-9]';

將找出“老1”、“老2”、……、“老9”;

如要找“-”字符請(qǐng)將其放在首位:';張三[-1-9]';

4. [^ ] 表示不在括號(hào)所列之內(nèi)的單個(gè)字符。語(yǔ)句:

SELECT * FROM user WHERE name LIKE ';[^張李王]三';

將找出不姓“張”、“李”、“王”的“趙三”、“孫三”等;

SELECT * FROM user WHERE name LIKE ';老[^1-4]';

將排除“老1”到“老4”尋找“老5”、“老6”、……、“老9”。

!最后是重點(diǎn)!

由于通配符的緣故,導(dǎo)致我們查詢特殊字符“%”、“_”、“[”、“';”的語(yǔ)句無(wú)法正常實(shí)現(xiàn),而把特殊字符用“[ ]”括起便可正常查詢。據(jù)此我們寫出以下函數(shù):

function sqlencode(str)

str=replace(str,"';","';';")

str=replace(str,"[","[[]") ';此句一定要在最先

str=replace(str,"_","[_]")

str=replace(str,"%","[%]")

sqlencode=str

end function

mysql 模糊查詢

1、如果你什么也沒(méi)有輸入的話,sql語(yǔ)句就如下:

select * from tablename where name like '%%';

這樣的話就是 name 等于任何字符都會(huì)被查出,當(dāng)然所有內(nèi)容都會(huì)出來(lái)了。

2、這不是問(wèn)題,從查詢的設(shè)計(jì)角度看,什么都不輸入自然是要匹配所有數(shù)據(jù),相反輸入了東西就是匹配它了。

*****************

補(bǔ)充:

*****************

如果你想什么都不輸入的時(shí)候什么也不返回的話方法如下:

在后臺(tái)寫兩個(gè)sql,類似如下

if ($name == ""){

$exec="select * from tablename where 1=2";

}else{

$exec="select * from tablename where name like '%$name%'";

}

---

以上,希望對(duì)你有所幫助。

mysql模糊查詢

mysql 中一般使用like 來(lái)進(jìn)行模糊查詢,但like 的效率非常的低,容易導(dǎo)致全表掃描,因此不推薦使用。

那有木有其他的方法代替like來(lái)進(jìn)行模糊查詢呢?

替代方法肯定是有的,以下是幾個(gè)可替代like 進(jìn)行模糊查詢的 關(guān)鍵詞

instr

locate

position

find_in_set

下面簡(jiǎn)單介紹下各個(gè)方法的使用情況

測(cè)試對(duì)象content 表

SELECT COUNT(mlzm_content.id) FROM mlzm_content

數(shù)據(jù)量: 33034 條信息

LIKE

SELECT id,Title from mlzm_content WHERE Title LIKE '%美女%'

結(jié)果:294 條記錄

耗時(shí): 0.0130 秒

SELECT id,Title from mlzm_content WHERE Title LIKE '%模特%'

結(jié)果:10 條記錄

耗時(shí): 0.0550 秒

結(jié)論:但查詢到結(jié)果集的數(shù)據(jù)量少的時(shí)候like耗時(shí)會(huì)增加,即總數(shù)據(jù)量不變,結(jié)果越少耗時(shí)約大

INSTR

語(yǔ)法:INSTR(str, substr)

SELECT id,title from mlzm_content WHERE INSTR(Title,'美女')0;

結(jié)果:294 條

耗時(shí):0.0150 秒

INSTR(str, substr) 與LOCATE(substr, str) 類似,只是參數(shù)的位置變了

LOCATE

語(yǔ)法:LOCATE(substr, str)

SELECT id,title from mlzm_content WHERE LOCATE('美女',Title)0;

結(jié)果:294 條

耗時(shí): 0.0150 秒

SELECT id,title from mlzm_content WHERE LOCATE('模特',Title)0

結(jié)果:10條

耗時(shí): 0.0760 秒

mysql模糊查詢?cè)趺床槎鄠€(gè)字段

下面兩種情況:

1.返回值:由全體出入?yún)?shù)合并在一起而得到的字符串。只要輸入的參數(shù)中有NULL值,就返回NULL。CONCAT允許只有一個(gè)輸入?yún)?shù)的情況。

因此,MySQL單表多字段模糊查詢可以通過(guò)下面這個(gè)SQL查詢實(shí)現(xiàn)

SELECT * FROM `magazine` WHERE CONCAT(`title`,`tag`,`description`) LIKE ‘%關(guān)鍵字%’

2.如果這三個(gè)字段中有值為NULL,則返回的也是NULL,那么這一條記錄可能就會(huì)被錯(cuò)過(guò),怎么處理呢,我這邊使用的是IFNULL進(jìn)行判斷,則sql改為:

pre name="code" class="sql"SELECT * FROM `magazine` WHERE CONCAT(IFNULL(`title`,''),IFNULL(`tag`,''),IFNULL(`description`,'')) LIKE ‘%關(guān)鍵字%’

新聞標(biāo)題:mysql字段模糊怎么查 數(shù)據(jù)庫(kù)字段模糊查詢
文章出自:http://muchs.cn/article24/hjsoce.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供手機(jī)網(wǎng)站建設(shè)、營(yíng)銷型網(wǎng)站建設(shè)關(guān)鍵詞優(yōu)化、網(wǎng)站策劃、ChatGPT、企業(yè)網(wǎng)站制作

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

網(wǎng)站托管運(yùn)營(yíng)