ລາຍການຫົວເລື່ອງ
ຖານຂໍ້ມູນ MySQLການສະແດງອອກເປັນປົກກະຕິກົງກັນແນວໃດ?MySQL regexp ຄືການນໍາໃຊ້
MySQL ການສະແດງອອກປົກກະຕິ
ໃນບົດທີ່ຜ່ານມາພວກເຮົາໄດ້ຮຽນຮູ້ວ່າ MySQL ສາມາດຜ່ານ ມັກ…% ເພື່ອປະຕິບັດການຈັບຄູ່ fuzzy.
MySQL ຍັງຮອງຮັບການຈັບຄູ່ການສະແດງອອກປົກກະຕິອື່ນໆ. ໂຕປະຕິບັດການ REGEXP ຖືກນໍາໃຊ້ໃນ MySQL ສໍາລັບການຈັບຄູ່ການສະແດງອອກເປັນປົກກະຕິ.
ຖ້າທ່ານຮູ້ຈັກ PHP ຫຼື Perl, ມັນງ່າຍຫຼາຍທີ່ຈະເຮັດເພາະວ່າການຈັບຄູ່ການສະແດງອອກປົກກະຕິຂອງ MySQL ແມ່ນຄ້າຍຄືກັນກັບສະຄິບເຫຼົ່ານີ້.
ຮູບແບບປົກກະຕິໃນຕາຕະລາງຕໍ່ໄປນີ້ສາມາດໃຊ້ກັບຕົວປະຕິບັດການ REGEXP.
ຮູບແບບ | ຄຳ ອະທິບາຍ |
---|---|
^ | ກົງກັບຈຸດເລີ່ມຕົ້ນຂອງສະຕຣິງປ້ອນຂໍ້ມູນ. ຖ້າຄຸນສົມບັດ Multiline ຂອງວັດຖຸ RegExp ຖືກຕັ້ງ, ^ ຍັງກົງກັບຕໍາແຫນ່ງຫຼັງຈາກ '\n' ຫຼື '\r'. |
$ | ກົງກັບທ້າຍຂອງສະຕຣິງປ້ອນຂໍ້ມູນ. ຖ້າຄຸນສົມບັດ Multiline ຂອງວັດຖຸ RegExp ຖືກຕັ້ງ, $ ຍັງກົງກັບຕໍາແຫນ່ງກ່ອນ '\n' ຫຼື '\r'. |
. | ກົງກັບຕົວອັກສອນດຽວຍົກເວັ້ນ "\n". ເພື່ອຈັບຄູ່ຕົວລະຄອນໃດໜຶ່ງລວມທັງ '\n', ໃຫ້ໃຊ້ຮູບແບບເຊັ່ນ '[.\n]'. |
[... ] | ການເກັບກໍາຕົວອັກສອນ. ກົງກັບຕົວລະຄອນໃດນຶ່ງທີ່ມີ. ຕົວຢ່າງ, '[abc]' ຈະກົງກັບ "plai'a' ໃນ n". |
[^…] | ຄໍເລັກຊັນຂອງລັກສະນະທາງລົບ. ກົງກັບຕົວອັກສອນໃດນຶ່ງທີ່ບໍ່ໄດ້ລວມເຂົ້າ. ຕົວຢ່າງ, '[^abc]' ກົງກັບ 'p' ໃນ "ທຳມະດາ". |
p1|p2|p3 | ກົງກັບ p1 ຫຼື p2 ຫຼື p3. ຕົວຢ່າງ, 'z|food' ກົງກັບ "z" ຫຼື "ອາຫານ". '(z|f)ood' ກົງກັບ "zood" ຫຼື "ອາຫານ". |
* | ກົງກັບການສະແດງຜົນຍ່ອຍກ່ອນໜ້ານີ້ເປັນສູນ ຫຼືຫຼາຍເທື່ອ. ຕົວຢ່າງ, zo* ກົງກັບ "z" ແລະ "zoo". * ເທົ່າກັບ {0,}. |
+ | ກົງກັບຕົວສະແດງຍ່ອຍກ່ອນໜ້າໜຶ່ງ ຫຼືຫຼາຍຄັ້ງ. ຕົວຢ່າງ, 'zo+' ກົງກັບ "zo" ແລະ "zoo", ແຕ່ບໍ່ແມ່ນ "z". + ເທົ່າກັບ {1,}. |
{n} | n ເປັນຈຳນວນເຕັມທີ່ບໍ່ມີລົບ. ການແຂ່ງຂັນທີ່ກໍານົດ n ເວລາ. ຕົວຢ່າງ, 'o{2}' ບໍ່ສາມາດກົງກັບ 'o' ໃນ "Bob", ແຕ່ມັນສາມາດກົງກັບສອງ o ໃນ "ອາຫານ". |
{n,m} | m ແລະ n ແມ່ນທັງສອງຕົວເລກທີ່ບໍ່ໄດ້ລົບ, ບ່ອນທີ່ n <= m. ຈັບຄູ່ກັນຢ່າງໜ້ອຍ n ຄັ້ງ ແລະເວລາຫຼາຍທີ່ສຸດ. |
ຕົວຢ່າງ
ຫຼັງຈາກເຂົ້າໃຈຂໍ້ກໍານົດປົກກະຕິຂ້າງເທິງ, ພວກເຮົາສາມາດຂຽນຄໍາຖະແຫຼງທີ່ SQL ດ້ວຍການສະແດງອອກເປັນປົກກະຕິຕາມຄວາມຕ້ອງການຂອງພວກເຮົາເອງ. ຂ້າງລຸ່ມນີ້ພວກເຮົາຈະບອກຕົວຢ່າງເລັກນ້ອຍ (ຊື່ຕາຕະລາງ: person_tbl) ເພື່ອເຮັດໃຫ້ຄວາມເຂົ້າໃຈຂອງພວກເຮົາເລິກເຊິ່ງ:
ຊອກຫາຂໍ້ມູນທັງໝົດທີ່ເລີ່ມຕົ້ນດ້ວຍ 'st' ໃນຊ່ອງຊື່:
mysql> SELECT name FROM person_tbl WHERE name REGEXP '^st';
ຊອກຫາຂໍ້ມູນທັງໝົດທີ່ລົງທ້າຍດ້ວຍ 'ok' ໃນຊ່ອງຊື່:
mysql> SELECT name FROM person_tbl WHERE name REGEXP 'ok$';
ຊອກຫາຂໍ້ມູນທັງໝົດທີ່ມີ 'mar' ໃນຊ່ອງຊື່:
mysql> SELECT name FROM person_tbl WHERE name REGEXP 'mar';
ຊອກຫາຂໍ້ມູນທັງໝົດໃນຊ່ອງຊື່ທີ່ເລີ່ມຕົ້ນດ້ວຍຕົວສະຫຼູຫຼາ ຫຼືລົງທ້າຍດ້ວຍສະຕຣິງ 'ok':
mysql> SELECT name FROM person_tbl WHERE name REGEXP '^[aeiou]|ok$';
ຫວັງ Chen Weiliang Blog ( https://www.chenweiliang.com/ ) ແບ່ງປັນ "ວິທີການຈັບຄູ່ການສະແດງອອກປົກກະຕິໃນຖານຂໍ້ມູນ MySQL?" MySQL regexp ເຊັ່ນການນໍາໃຊ້", ມັນຈະເປັນປະໂຫຍດສໍາລັບທ່ານ.
ຍິນດີຕ້ອນຮັບແບ່ງປັນການເຊື່ອມຕໍ່ຂອງບົດຄວາມນີ້:https://www.chenweiliang.com/cwl-492.html
ຍິນດີຕ້ອນຮັບສູ່ຊ່ອງ Telegram ຂອງບລັອກຂອງ Chen Weiliang ເພື່ອຮັບອັບເດດຫຼ້າສຸດ!
📚ຄູ່ມືນີ້ມີຄຸນຄ່າອັນມະຫາສານ, 🌟ນີ້ເປັນໂອກາດທີ່ຫາຍາກ, ຢ່າພາດມັນ! ⏰⌛💨
Share and like ຖ້າມັກ!
ການແບ່ງປັນແລະການຖືກໃຈຂອງທ່ານແມ່ນການຊຸກຍູ້ຢ່າງຕໍ່ເນື່ອງຂອງພວກເຮົາ!