MySQL
 Computer >> コンピューター >  >> プログラミング >> MySQL

正規表現を使用してMySQLでデータチェックを実施することは可能ですか?


はい、正規表現を使用してMySQLでデータチェックを実施することは可能です。まず、テーブルを作成する必要があります。その後、テーブルに挿入する前にトリガーを作成する必要があります。ここでは、電話番号の形式を確認します。

テーブルを作成するためのクエリは次のとおりです

mysql> create table enforceDataUsingRegularExpression
   - > (
   - > yourPhoneNumber varchar(60)
   - > );
Query OK, 0 rows affected (0.59 sec)

トリガーを作成するためのクエリは次のとおりです

mysql> DELIMITER //
mysql> CREATE TRIGGER enforce_phone_check BEFORE INSERT ON enforceDataUsingRegularExpression
   - > FOR EACH ROW
   - > BEGIN
   - > IF (NEW.yourPhoneNumber REGEXP '^(\\+?[0-9]{1,4}-)?[0-9]{3,10}$' ) = 0 THEN
   - > SIGNAL SQLSTATE '33455'
   - > SET MESSAGE_TEXT = 'Your Phone Number is incorrect';
   - > END IF;
   - > END //
Query OK, 0 rows affected (0.16 sec)
mysql> DELIMITER ;

次に、テーブルにレコードを挿入して正規表現を使用してMySQLでデータチェックを実施するときのエラーを確認します

mysql> insert into enforceDataUsingRegularExpression values("+55242-64576");
ERROR 1644 (33455): Your Phone Number is incorrect
mysql> insert into enforceDataUsingRegularExpression values("+76-WD1232221");
ERROR 1644 (33455): Your Phone Number is incorrect
Now inserting the correct data i.e. the correct phone, which is as follows:
mysql> insert into enforceDataUsingRegularExpression values("+55-1232221");
Query OK, 1 row affected (0.13 sec)

selectステートメントを使用してテーブルのすべてのレコードを表示します。

クエリは次のとおりです

mysql> select *from enforceDataUsingRegularExpression;

以下は出力です

+-----------------+
| yourPhoneNumber |
+-----------------+
| +55-1232221     |
+-----------------+
1 row in set (0.00 sec)

  1. 正規表現を使用してPythonで数字のみを照合するにはどうすればよいですか?

    次のコードは、Python正規表現を使用して、指定された文字列の数字のみに一致します。 例 import re m = re.search(r'\d+', '5Need47forSpeed 2') print m 出力 <_sre.SRE_Match object at 0x0000000004B46648> 例 次のコードは、指定された文字列内のすべての数字を検索し、それらをリストとして出力します import re m = re.findall(r'\d', '5Need47forSpeed 2') print m

  2. 正規表現を使用してPythonで単語を照合するにはどうすればよいですか?

    次のコードは、指定された文字列の「meeting」という単語と一致します。 前向きな先読みアサーションと後ろ向きアサーションを使用して、囲んでいる文字を尊重しますが、一致には含めません。 例 import re s = """https://www.google.com/meeting_agenda_minutes.html""" result = re.findall(r'(?<=[\W_])meeting(?=[\W_])', s) print result 出力 ['meeting']