2009-08-30 7 views

Répondre

0

Il peut partiellement dépendent de votre implémentation SQLite. De the docs:

L'opérateur REGEXP est une syntaxe spéciale pour la fonction utilisateur regexp(). Aucune fonction utilisateur regexp() n'est définie par défaut et l'utilisation de l'opérateur REGEXP entraîne normalement un message d'erreur. Si une fonction définie par l'utilisateur nommée "regexp" est ajoutée au moment de l'exécution, cette fonction sera appelée pour implémenter l'opérateur REGEXP.

Si votre implémentation ne ont un REGEXP défini, il devrait être aussi simple que d'une expression rationnelle de « (.*?)\(.*?\)(.*) », ne retournant que les groupes 1 et 2 pour ignorer ce qui est à l'intérieur des parenthèses.

Cette approche n'est pas portable car la plupart des implémentations de SQLite n'ont probablement pas REGEXP défini.

Quelqu'un à this forum a récemment passé par un long fil demandant presque la même chose, et il n'a pas eu de chance. Au meilleur de ma connaissance, il n'y a pas de fonctionnalité intégrée pour le faire. Sa réponse finale était de couper un nombre constant de caractères, car toutes les données se terminaient uniformément dans '@ xyz.com' - si vos données sont uniformément uniformes, vous pouvez simplement couper le premier et traîner les caractères X et Y.

En fait, de retour , someone made a patch for charindex support, mais pour une raison quelconque, il n'a apparemment jamais été ajouté dans le coffre. Quelqu'un d'autre a fait a similar patch with more functionality, mais cela vous oblige à charger une bibliothèque partagée externe - encore une fois, pas exactement portable.

Ce dernier pourrait être votre meilleure option - écrire une bibliothèque partagée en C, et LOADing it from SQLite. Ou vous pouvez simplement implémenter la modification de chaîne dans n'importe quelle langue que vous utilisez SQLite :)

Questions connexes