MySQL是一個關系型數(shù)據(jù)庫管理系統(tǒng)诊霹,由瑞典MySQL AB 公司開發(fā),目前屬于 Oracle 旗下產(chǎn)品。MySQL 最流行的關系型數(shù)據(jù)庫管理系統(tǒng)智嚷,在 WEB 應用方面MySQL是最好的 RDBMS (Relational Database Management System寒随,關系數(shù)據(jù)庫管理系統(tǒng)) 應用軟件之一糠悯。
MySQL是一種關聯(lián)數(shù)據(jù)庫管理系統(tǒng)帮坚,關聯(lián)數(shù)據(jù)庫將數(shù)據(jù)保存在不同的表中,而不是將所有數(shù)據(jù)放在一個大倉庫內互艾,這樣就增加了速度并提高了靈活性试和。
MySQL所使用的 SQL 語言是用于訪問數(shù)據(jù)庫的最常用標準化語言。MySQL 軟件采用了雙授權政策纫普,它分為社區(qū)版和商業(yè)版阅悍,由于其體積小、速度快昨稼、總體擁有成本低节视,尤其是開放源碼這一特點,一般中小型網(wǎng)站的開發(fā)都選擇 MySQL 作為網(wǎng)站數(shù)據(jù)庫悦昵。由于其社區(qū)版的性能卓越肴茄,搭配 PHP 和 Apache 可組成良好的開發(fā)環(huán)境。
一但指、基本字符匹配
SELECT prod_name FROM products WHERE prod_name REGEXP '1000' ORDER BY prod_name;
在數(shù)據(jù)庫example中建立表products 寡痰,如下:
此語句的輸出如下圖所示:
二、進行OR匹配
SELECT prod_name FROM products WHERE prod_name REGEXP '1000|2000' ORDER BY prod_name;
此語句的輸出如下圖所示:
三棋凳、匹配幾個字符之一
可通過指定一組用[和]括起來的字符來完成拦坠。
SELECT prod_name FROM products WHERE prod_name REGEXP '[123] Ton' ORDER BY prod_name;
SELECT prod_name FROM products WHERE prod_name REGEXP '[1|2|3] Ton' ORDER BY prod_name;
此語句的輸出如下圖所示:
這里使用了正則表達式[123] Ton。[123]定義一組字符剩岳,它的意思是匹配1或2或3贞滨。
四、匹配范圍
集合可用來定義要匹配的一個或多個字符拍棕。例如晓铆,下面的集合將匹配數(shù)字0-9:[0123456789]〈虏ィ可以簡化為[0-9]骄噪。范圍不限于完整的集合,[1-3]和[6-9]也是合法的范圍蠢箩。此外链蕊,范圍不一定只是數(shù)值的,[a-z]匹配任意字母字符谬泌。
SELECT prod_name FROM products WHERE prod_name REGEXP '[1-5] Ton' ORDER BY prod_name;
此語句的輸出如下圖所示:
五滔韵、匹配特殊字符
為了匹配特殊字符,必須用\為前導掌实。\-表示查找-陪蜻,\.表示查找.。
SELECT vend_name FROM vendors WHERE vend_name REGEXP '\\.' ORDER BY vend_name;
此語句的輸出如下圖所示:
六潮峦、定位符
如果想找出以一個數(shù)(包括以小數(shù)點開始的數(shù))開始的產(chǎn)品囱皿,怎么辦勇婴?乙濒?解決辦法就是用^定位符详羡,如下所示:
SELECT prod_name FROM products WHERE prod_name REGEXP '^[0-9\\.]' ORDER BY prod_name;
此語句的輸出如下圖所示:
七、簡單的正則表達式的測試
可以在不使用數(shù)據(jù)庫表的情況下用SELECT來檢測正則表達式邻吞。REGEXP檢查總是返回0(沒有匹配)或1(匹配)齿兔〕髁常可以用帶文字串的REGEXP來測試表達式,并試驗它們分苇。相應的語法如下:
SELECT 'hello' REGEXP '[0-9]';
這個例子顯然將返回0(因為hello中沒有數(shù)字)添诉。