2 votes

Expression régulière MYSQL correspondant à n'importe quel mot entre crochets

Je dois trouver toutes les valeurs d'une colonne spécifique dans un tableau dont les valeurs correspondent à [nom].

Je ne devrais pas obtenir de valeurs telles que [a]+[b] ou [a]>[b] ou [a]%[b]=[c].

Je n'ai donc pas besoin de valeurs de colonnes contenant des caractères spéciaux, à l'exception des crochets et du pointage.

exemple : [test_123] devrait être renvoyé.

J'ai essayé

select * from table_name where column_name REGEXP '^[[][^+-></%]';

Il s'agit simplement d'essayer de voir s'il y a un caractère spécial immédiatement après [ mais comment voir s'il y a un caractère spécial dans la valeur de la colonne entière et devons-nous utiliser des antislashs pour définir les caractères spéciaux dans MySQL ?

J'ai essayé en https://regexr.com/ et j'ai obtenu que ma Regex requise soit

(\[)\w+[^\+\=\/\*\%\^\!](\])

mais je n'ai pas pu faire la même chose avec MySQL

0voto

adamoffat Points 442

*** UPDATED **

(\[[^\_]+])+

Cela semble correspondre à ce que vous recherchez.

Votre requête est également erronée, je crois qu'elle est censée ressembler à ce qui suit :

SELECT * FROM mytable WHERE REGEXP_LIKE(mycolumn, 'regexp', 'i');

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X