1、方法一:可以用%來實現(xiàn)。
讓客戶滿意是我們工作的目標,不斷超越客戶的期望值來自于我們對這個行業(yè)的熱愛。我們立志把好的技術(shù)通過有效、簡單的方式提供給客戶,將通過不懈努力成為客戶在信息化領(lǐng)域值得信任、有價值的長期合作伙伴,公司提供的服務(wù)項目有:申請域名、虛擬空間、營銷軟件、網(wǎng)站建設(shè)、嶗山網(wǎng)站維護、網(wǎng)站推廣。
比如:SELECT *FROM usersWHERE emailslike "%b@email點抗 %"。
2、方法二:利用mysql?字符串函數(shù) find_in_set();
SELECT *FROM usersWHERE find_in_set('aa@email點抗 ', emails);
要注意的是:mysql字符串函數(shù) find_in_set(str1,str2)函數(shù)是返回str2中str1所在的位置索引,str2必須以","分割開。
3、方法三:多個值模糊查詢,使用mysql正則:REGEXP。
此方式相當(dāng)于(?LIKE?'%1%'?OR LIKE?'%3%'?OR LIKE?'%5%'?)
SELECT * FROM `by_content` WHERE title REGEXP '(1|3|5)'。
擴展資料
mysql字符串函數(shù):FIND_IN_SET()使用方法詳解:
語法:
FIND_IN_SET(str,strlist)
第一個參數(shù)str是要查找的字符串。
第二個參數(shù)strlist是要搜索的逗號分隔的字符串列表。
假如字符串str 在由N 子鏈組成的字符串列表strlist 中,則返回值的范圍在 1 到 N 之間。
一個字符串列表就是一個由一些被‘,’符號分開的子鏈組成的字符串。如果第一個參數(shù)是一個常數(shù)字符串,而第二個是type SET列,則 FIND_IN_SET() 函數(shù)被優(yōu)化,使用比特計算。
如果str不在strlist 或strlist 為空字符串,則返回值為 0 。如任意一個參數(shù)為NULL,則返回值為 NULL。這個函數(shù)在第一個參數(shù)包含一個逗號(‘,’)時將無法正常運行。
MySQL數(shù)據(jù)庫一般指MySQL,MySQL是一個關(guān)系型數(shù)據(jù)庫管理系統(tǒng),由瑞典MySQL AB 公司開發(fā)。
mysql是目前網(wǎng)站以及APP應(yīng)用上用得較多的一個開源的關(guān)系型數(shù)據(jù)庫系統(tǒng),可以對數(shù)據(jù)進行保存,分段化的數(shù)據(jù)保存,也可以對其數(shù)據(jù)進行檢索,查詢等功能的數(shù)據(jù)庫。
默認的mysql數(shù)據(jù)庫中存有一個庫這個就是mysql的系統(tǒng)數(shù)據(jù)庫,可以對其保存系統(tǒng)的數(shù)據(jù)包括mysql數(shù)據(jù)庫的信息,數(shù)據(jù)庫root賬號,普通賬號,以及數(shù)據(jù)庫的名稱,還有數(shù)據(jù)庫的一些表還有一些數(shù)字型的數(shù)據(jù)類型結(jié)構(gòu)都會有所保存。
mysql數(shù)據(jù)庫的優(yōu)點
(1)MySQL數(shù)據(jù)庫是用C和C++語言編寫的,并且使用了多種編輯器進行測試,以保證源碼的可移植性。
(2)支持多個操作系統(tǒng)例如:Windows、Linux、Mac OS等等。
(3)支持多線程,可以充分的利用CPU資源。
(4)為多種編程語言提供API,包括C語言、Java、PHP、Python語言等。
(5)MySQL優(yōu)化了SQL算法,有效的提高了查詢速度。
(6)MySQL內(nèi)提供了用于管理,檢查以及優(yōu)化數(shù)據(jù)庫操作的管理工具。
(7)它能夠作為一個單獨的應(yīng)用程序應(yīng)用在客戶端服務(wù)器網(wǎng)絡(luò)環(huán)境中,也可以作為一個庫嵌入到其他的軟件中并提供多種語言支持。
我們通常在 WHERE 子句中使用 CONTAINS ,就象這樣:SELECT * FROM table_name WHERE CONTAINS(fullText_column,'search contents')。
我們通過例子來學(xué)習(xí),假設(shè)有表 students,其中的 address 是全文本檢索的列。
1. 查詢住址在北京的學(xué)生
SELECT student_id,student_name
FROM students
WHERE CONTAINS( address, 'beijing' )
remark: beijing是一個單詞,要用單引號括起來。
2. 查詢住址在河北省的學(xué)生
SELECT student_id,student_name
FROM students
WHERE CONTAINS( address, '"HEIBEI province"' )
remark: HEBEI province是一個詞組,在單引號里還要用雙引號括起來。
3. 查詢住址在河北省或北京的學(xué)生
SELECT student_id,student_name
FROM students
WHERE CONTAINS( address, '"HEIBEI province" OR beijing' )
remark: 可以指定邏輯操作符(包括 AND ,AND NOT,OR )。
4. 查詢有 '南京路' 字樣的地址
SELECT student_id,student_name
FROM students
WHERE CONTAINS( address, 'nanjing NEAR road' )
remark: 上面的查詢將返回包含 'nanjing road','nanjing east road','nanjing west road' 等字樣的地址。
A NEAR B,就表示條件: A 靠近 B。
5. 查詢以 '湖' 開頭的地址
SELECT student_id,student_name
FROM students
WHERE CONTAINS( address, '"hu*"' )
remark: 上面的查詢將返回包含 'hubei','hunan' 等字樣的地址。
記住是 *,不是 %。
6. 類似加權(quán)的查詢
SELECT student_id,student_name
FROM students
WHERE CONTAINS( address, 'ISABOUT (city weight (.8), county wright (.4))' )
remark: ISABOUT 是這種查詢的關(guān)鍵字,weight 指定了一個介于 0~1之間的數(shù),類似系數(shù)(我的理解)。表示不同條件有不同的側(cè)重。
7. 單詞的多態(tài)查詢
SELECT student_id,student_name
FROM students
WHERE CONTAINS( address, 'FORMSOF (INFLECTIONAL,street)' )
remark: 查詢將返回包含 'street','streets'等字樣的地址。
對于動詞將返回它的不同的時態(tài),如:dry,將返回 dry,dried,drying 等等。
以上例子都使用英文,不使用中文是因為有的查詢方式中文不支持
mysql存儲過程的基本用法有哪些
在外部程序訪問數(shù)據(jù)庫時(例如 PHP),要組織很多 SQL 語句。
特別是業(yè)務(wù)邏輯復(fù)雜的時候,一大堆的 SQL 和條件夾雜在 PHP 代碼中,讓人不寒而栗?,F(xiàn)在有了 MySQL 存儲過程,業(yè)務(wù)邏輯可以封裝存儲過程中,這樣不僅容易維護,而且執(zhí)行效率也高。
一、MySQL 創(chuàng)建存儲過程
"pr_add" 是個簡單的 MySQL 存儲過程,這個MySQL 存儲過程有兩個 int 類型的輸入?yún)?shù) "a"、"b",返回這兩個參數(shù)的和。
復(fù)制代碼 代碼如下:
drop procedure if exists pr_add;
計算兩個數(shù)之和
復(fù)制代碼 代碼如下:
create procedure pr_add
(
a int,
b int
)
begin
declare c int;
if a is null then
set a = 0;
end if;
if b is null then
set b = 0;
end if;
set c = a + b;
select c as sum;
/*
return c;
不能在 MySQL 存儲過程中使用。return 只能出現(xiàn)在函數(shù)中。
*/
end;
二、調(diào)用 MySQL 存儲過程
復(fù)制代碼 代碼如下:
call pr_add(10, 20);
執(zhí)行 MySQL 存儲過程,存儲過程參數(shù)為 MySQL 用戶變量。
復(fù)制代碼 代碼如下:
set @a = 10;
set @b = 20;
call pr_add(@a, @b);
三、MySQL 存儲過程特點
創(chuàng)建 MySQL 存儲過程的簡單語法為:
復(fù)制代碼 代碼如下:
create procedure 存儲過程名字()
(
[in|out|inout] 參數(shù) datatype
)
begin
MySQL 語句;
end;
MySQL 存儲過程參數(shù)如果不顯式指定"in"、"out"、"inout",則默認為"in"。習(xí)慣上,對于是"in" 的參數(shù),我們都不會顯式指定。
1. MySQL 存儲過程名字后面的"()"是必須的,即使沒有一個參數(shù),也需要"()"
2. MySQL 存儲過程參數(shù),不能在參數(shù)名稱前加"@",如:"@a int"。下面的創(chuàng)建存儲過程語法在 MySQL 中是錯誤的(在 SQL Server 中是正確的)。 MySQL 存儲過程中的變量,不需要在變量名字前加"@",雖然 MySQL 客戶端用戶變量要加個"@"。
復(fù)制代碼 代碼如下:
create procedure pr_add
(
@a int, -- 錯誤
b int -- 正確
)
3. MySQL 存儲過程的參數(shù)不能指定默認值。
4. MySQL 存儲過程不需要在 procedure body 前面加 "as"。而 SQL Server 存儲過程必須加 "as" 關(guān)鍵字。
復(fù)制代碼 代碼如下:
create procedure pr_add
(
a int,
b int
)
as -- 錯誤,MySQL 不需要 "as"
begin
mysql statement ...;
end;
5. 如果 MySQL 存儲過程中包含多條 MySQL 語句,則需要 begin end 關(guān)鍵字。
復(fù)制代碼 代碼如下:
create procedure pr_add
(
a int,
b int
)
begin
mysql statement 1 ...;
mysql statement 2 ...;
end;
6. MySQL 存儲過程中的每條語句的末尾,都要加上分號 ";"
復(fù)制代碼 代碼如下:
...
declare c int;
if a is null then
set a = 0;
end if;
...
end;
7. MySQL 存儲過程中的注釋。
復(fù)制代碼 代碼如下:
/*
這是個
多行 MySQL 注釋。
*/
declare c int; -- 這是單行 MySQL 注釋 (注意 -- 后至少要有一個空格)
if a is null then # 這也是個單行 MySQL 注釋
set a = 0;
end if;