J'ai une tâche simple où je dois rechercher un enregistrement commençant par des caractères de chaîne et un chiffre après eux. Ce que j'essaye c'est
SELECT trecord FROM `tbl` WHERE (trecord LIKE 'ALA[d]%')
Et
SELECT trecord FROM `tbl` WHERE (trecord LIKE 'ALA[0-9]%')
Mais les deux requêtes renvoient toujours un enregistrement null
trecord
-------
null
Où comme si j'exécutais la requête suivante
SELECT trecord FROM `tbl` WHERE (trecord LIKE 'ALA%')
il revient
trecord
-------
ALA0000
ALA0001
ALA0002
Cela signifie que j'ai des enregistrements qui commencent par ALA et suivis d'un chiffre,
EDIT
Je le fais en utilisant PHP MySQL et le moteur innodb pour être spécifique.
Je pense que vous pouvez utiliser REGEXP au lieu de LIKE
SELECT trecord FROM `tbl` WHERE (trecord REGEXP '^ALA[0-9]')
Dans mon cas (Oracle), c'est WHERE REGEXP_LIKE(column, 'regex.*')
. Voir ici :
Fonction SQL
Description
REGEXP_LIKE
Cette fonction recherche un motif dans une colonne de caractères. Utilisez cette fonction dans la clause WHERE d'une requête pour renvoyer des lignes correspondant à l'expression régulière spécifiée.
...
REGEXP_REPLACE
Cette fonction recherche un motif dans une colonne de caractères et remplace chaque occurrence de ce motif par le motif que vous spécifiez.
...
REGEXP_INSTR
Cette fonction recherche dans une chaîne une occurrence donnée d'un modèle d'expression régulière. Vous spécifiez l'occurrence que vous souhaitez rechercher et la position de départ dans laquelle effectuer la recherche. Cette fonction renvoie un entier indiquant la position de la correspondance dans la chaîne.
...
REGEXP_SUBSTR
Cette fonction renvoie la sous-chaîne réelle correspondant au modèle d'expression régulière que vous spécifiez.
(Bien entendu, REGEXP_LIKE ne fait correspondre que les requêtes contenant la chaîne de recherche. Par conséquent, si vous souhaitez une correspondance complète, vous devrez utiliser '^$'
pour un début (^
) et fin ($
) match, par exemple: '^regex.*$'
.)