Mysql sql語句回顧2 --Regex,mysqlRegex

來源:互聯網
上載者:User

Mysql sql語句回顧2 --Regex,mysqlRegex

在這裡簡單回顧一下mysql在過濾資料的時候Regex的用法,主要是每個用法給一個例子,或者加一些簡短的說明。

這裡要提前說一下,使用Regex過濾資料是用 REGEXP關鍵字


基底字元匹配:

SELECT prod_name FROM products WHERE prod_name REGEXP ‘1000’;

該查詢語句的意思是prod_name欄位中包含1000的資料,只要值中的任何部位包含1000都可以

SELECT prod_name FROM products WHERE prod_name REGEXP ‘.000’;

"."代表的是單個字元的萬用字元,相當於任何單個字元,類似LIKE中的萬用字元"_"一樣,該語句的意思是查詢處prod_name欄位中包含諸如1000,2000,或者任意一個字元後邊跟上000的資料


進行OR匹配:

SELECT prod_name FROM products WHERE prod_name REGEXP ‘1000|2000’;

在這裡“|”代表or的意思,也就是“或”的意思,該語句會吧prod_name欄位中包含1000或者包含2000或者兩個都包含的資料查詢出來,or匹配可以給出兩個以上的匹配項例如 1000|2000|3000


匹配幾個字元之一:

SELECT prod_name FROM products WHERE prod_name REGEXP ‘[123] Ton’;

[]括起來的部分表示匹配其中一個例如 1 Ton ,2 Ton 這樣


匹配範圍:

SELECT prod_name FROM products WHERE prod_name REGEXP ‘[1-9] Ton’;

如果在上一個例子中[]括起來的部分的字元比較長,而且都是數組,並且數字又是連續的話,可以改成範圍匹配,這樣sql語句會更加簡短一點,當然可以把[1-9]換成[123456789],如果是字母的話可是使用[a-z]這樣的方式


匹配特殊字元:

SELECT prod_name FROM products WHERE prod_name REGEXP ‘\\.’;

在mysql中要匹配特殊字元的話需要加上//轉義一下才可以,因為特殊字元在sql語句中有特殊的含義


匹配多個執行個體:

首先需要介紹幾個匹配字元

* 0個或者多個匹配

+ 一個或者多個匹配(等於{1,})

? 0個或者一個匹配(等於{0,1})

{n} 指定數目的匹配

{n,} 不少於指定數目的匹配

{n,m} 匹配數目的範圍(m不超過255)

SELECT prod_name FROM products WHERE prod_name REGEXP ‘\\([0-9] sticks?\\)’;

在該語句中?匹配它前面的任何字元的0次或者一次出現


定位器:

^ 匹配文本的開始

$ 匹配文本的結尾

[[:<:]] 詞的開始

[[:>:]] 詞的結尾

SELECT prod_name FROM products WHERE prod_name REGEXP ‘^[0-9\\.]’;

該匹配字串的意思是只有以.和任一數字為開頭的資料被查詢


SQL語句用Regex怎表示?

Regex文法
一個Regex就是由一般字元(例如字元 a 到 z)以及特殊字元(稱為元字元)組成的文字模式。該模式描述在尋找文字主體時待匹配的一個或多個字串。Regex作為一個模板,將某個字元模式與所搜尋的字串進行匹配。
這裡有一些可能會遇到的Regex樣本:
JScriptVBScript匹配
/^\[ \t]*$/ "^\[ \t]*$" 匹配一個空白行。
/\d{2}-\d{5}/ "\d{2}-\d{5}" 驗證一個識別碼是否由一個2位元字,一個連字號以及一個5位元字組成。
/<(.*)>.*<\/\1>/ "<(.*)>.*<\/\1>" 匹配一個 HTML 標籤。
下表是元字元及其在Regex上下文中的行為的一個完整列表:
字元描述
\ 將下一個字元標記為一個特殊字元、或一個原義字元、或一個 後向引用、或一個八進位轉義符。例如,'n' 匹配字元 "n"。'\n' 匹配一個分行符號。序列 '\\' 匹配 "\" 而 "\(" 則匹配 "("。
^ 匹配輸入字串的開始位置。如果設定了 RegExp 對象的 Multiline 屬性,^ 也匹配 '\n' 或 '\r' 之後的位置。
$ 匹配輸入字串的結束位置。如果設定了RegExp 對象的 Multiline 屬性,$ 也匹配 '\n' 或 '\r' 之前的位置。
* 匹配前面的子運算式零次或多次。例如,zo* 能匹配 "z" 以及 "zoo"。 * 等價於{0,}。
+ 匹配前面的子運算式一次或多次。例如,'zo+' 能匹配 "zo" 以及 "zoo",但不能匹配 "z"。+ 等價於 {1,}。
? 匹配前面的子運算式零次或一次。例如,"do(es)?" 可以匹配 "do" 或 "does" 中的"do" 。? 等價於 {0,1}。
{n} n 是一個非負整數。匹配確定的 n 次。例如,'o{2}' 不能匹配 "Bob" 中的 'o',但是能匹配 "food" 中的兩個 o。
{n,} n 是一個非負整數。至少匹配n 次。例如,'o{2,}' 不能匹配 "Bob" 中的 'o',但能匹配 "foooood" 中的所有 o。'o{1,}' 等價於 'o+'。'o{0,}' 則等價於 'o*'。
{n,m} m 和 n 均為非負整......餘下全文>>
 
sqlRegex常用符號

SQL分類:
DDL—資料定義語言 (Data Definition Language)(CREATE,ALTER,DROP,DECLARE)
DML—資料操縱語言(SELECT,DELETE,UPDATE,INSERT)
DCL—資料控制語言(GRANT,REVOKE,COMMIT,ROLLBACK)

首先,簡要介紹基礎語句:
1、說明:建立資料庫
CREATE DATABASE database-name
2、說明:刪除資料庫
drop database dbname
3、說明:備份sql server
--- 建立備份資料的 device
USE master
EXEC sp_addumpdevice 'disk', 'testBack', 'c:\mssql7backup\MyNwind_1.dat'
--- 開始備份
BACKUP DATABASE pubs TO testBack
4、說明:建立新表
create table tabname(col1 type1 [not null] [primary key],col2 type2 [not null],..)
根據已有的表建立新表:
A:create table tab_new like tab_old (使用舊錶建立新表)
B:create table tab_new as select col1,col2… from tab_old definition only
5、說明:刪除新表drop table tabname
6、說明:增加一個列
Alter table tabname add column col type
註:列增加後將不能刪除。DB2中列加上後資料類型也不能改變,唯一能改變的是增加varchar類型的長度。
7、說明:添加主鍵: Alter table tabname add primary key(col)
說明:刪除主鍵: Alter table tabname drop primary key(col)
8、說明:建立索引:create [unique] index idxname on tabname(col….)
刪除索引:drop index idxname
註:索引是不可更改的,想更改必須刪除重建立。
9、說明:建立視圖:create view viewname as select statement
刪除視圖:drop view viewname
10、說明:幾個簡單的基本的sql語句
選擇:select * from table1 where 範圍
插入:insert into table1(field1,field2) values(value1,value2)
刪除:delete from table1 where 範圍
更新:update table1 set field1=value1 where 範圍
尋找:select * from table1 where field1 like ’%value1%’ ---like的文法很精妙,查資料!
排序:select * from table1 order by field1,field2 [desc]
總數:select count(*) as totalcount from table1
求和:select sum(field1) as sumvalue from table1
平均:select avg(field1) as avgvalue from table1
最大......餘下全文>>
 

相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.