ungkapan biasa MySQL
Ekspresi biasa MySQL
Dalam bab sebelumnya kita telah mengetahui bahawa MySQL boleh lulus LIKE...% untuk melakukan padanan kabur.
MySQL juga menyokong pemadanan ungkapan biasa yang lain MySQL menggunakan operator REGEXP untuk pemadanan ungkapan biasa.
Jika anda tahu PHP atau Perl, ia sangat mudah dilakukan kerana pemadanan ungkapan biasa MySQL adalah serupa dengan skrip ini.
Corak biasa dalam jadual di bawah boleh digunakan pada pengendali REGEXP.
模式 | 描述 |
---|---|
^ | 匹配输入字符串的开始位置。如果设置了 RegExp 对象的 Multiline 属性,^ 也匹配 'n' 或 'r' 之后的位置。 |
$ | 匹配输入字符串的结束位置。如果设置了RegExp 对象的 Multiline 属性,$ 也匹配 'n' 或 'r' 之前的位置。 |
. | 匹配除 "n" 之外的任何单个字符。要匹配包括 'n' 在内的任何字符,请使用象 '[.n]' 的模式。 |
[...] | 字符集合。匹配所包含的任意一个字符。例如, '[abc]' 可以匹配 "plain" 中的 'a'。 |
[^...] | 负值字符集合。匹配未包含的任意字符。例如, '[^abc]' 可以匹配 "plain" 中的'p'。 |
p1|p2|p3 | 匹配 p1 或 p2 或 p3。例如,'z|food' 能匹配 "z" 或 "food"。'(z|f)ood' 则匹配 "zood" 或 "food"。 |
* | 匹配前面的子表达式零次或多次。例如,zo* 能匹配 "z" 以及 "zoo"。* 等价于{0,}。 |
+ | 匹配前面的子表达式一次或多次。例如,'zo+' 能匹配 "zo" 以及 "zoo",但不能匹配 "z"。+ 等价于 {1,}。 |
{n} | n 是一个非负整数。匹配确定的 n 次。例如,'o{2}' 不能匹配 "Bob" 中的 'o',但是能匹配 "food" 中的两个 o。 |
{n,m} | m 和 n 均为非负整数,其中n <= m。最少匹配 n 次且最多匹配 m 次。 |
Contoh
Setelah memahami keperluan ungkapan biasa di atas, kita boleh menulis pernyataan SQL dengan ungkapan biasa mengikut keperluan kita sendiri. Di bawah kami akan menyenaraikan beberapa contoh kecil (nama jadual: person_tbl) untuk memperdalam pemahaman kami:
Cari semua data bermula dengan 'st' dalam medan nama:
mysql> SELECT name FROM person_tbl WHERE name REGEXP '^st';mencari semua data yang berakhir dengan 'ok' dalam medan nama:
mysql> SELECT name FROM person_tbl WHERE name REGEXP 'ok$';mencari semua data yang mengandungi rentetan 'mar' dalam medan nama:
mysql> SELECT name FROM person_tbl WHERE name REGEXP 'mar';mencari semua data dalam medan nama yang bermula dengan aksara vokal dan berakhir dengan rentetan 'ok':
mysql> SELECT name FROM person_tbl WHERE name REGEXP '^[aeiou]|ok$';
Cadangan tutorial video berkaitan: