Pour une requête LIKE standard sur une classe d'entités ArcSDE basée sur Oracle, le caractère de soulignement représente un caractère générique à caractère unique lorsqu'il est utilisé avec une chaîne.
J'essaie d'imposer une requête de définition pour trouver une chaîne de texte qui commence par 4 chiffres exactement suivis d'un caractère de soulignement.
Est-ce que quelqu'un sait comment je spécifierais un caractère de soulignement lui-même dans une requête ou si / quel pourrait être le caractère d'échappement?
La réponse de MDHald fonctionne pour les géodatabases fichier mais mon cas est spécifique à Oracle. On a supposé à tort qu'ArcSDE et la requête de géodatabase fichier fonctionneraient de la même manière dans ce cas.
\
- je pense que c'est également le cas avec Oracle, vous devriez donc rechercher\_
si vous recherchez le trait de soulignement.LIKE
(même si vous mentionnez LIKE dans votre question) -CABLE LIKE '____\_%'
. Je vais jouer ici même si j'utilise SQL Server plutôt qu'Oracle, donc je peux obtenir des résultats différentsCABLE LIKE '____\_%' ESCAPE '\'
- from SQL reference for query expressions used in ArcGIS - Desktop HelpRéponses:
Géré pour retrouver la réponse.
Vous pouvez spécifier un caractère ESCAPE dans la requête tel que:
MY_FIELD LIKE '____ $ _%' ESCAPE '$'
Cela recherchera exactement 4 caractères suivis d'un caractère de soulignement et de toute autre chose après cela.
Trouvé la documentation sur cette page: http://desktop.arcgis.com/en/arcmap/10.3/map/working-with-layers/sql-reference-for-query-expressions-used-in-arcgis.htm
Vous ne savez pas jusqu'où ou pour quelles versions cela est valide, mais cela fonctionne pour ArcGIS Desktop 10.3.
Extrait de la documentation:
la source
Vous devrez utiliser CHAR_LENGTH et SUBSTRING pour que cela fonctionne. Il ressemblerait à ceci:
où yourfieldname = le nom de votre champ.
Ne supprimez pas le "" dans le code. Copiez tel quel et remplacez uniquement le texte votrenom.
la source
Je suis tombé sur ce Q&A qui m'a aidé à résoudre pourquoi je ne pouvais pas utiliser une clause where sur un curseur de recherche ArcPy qui pouvait restreindre le curseur aux enregistrements qui contenaient un trait de soulignement (
_
) dans un champ de texte particulier.Au moment où je l'ai trouvé, j'avais déjà développé un extrait de code pour illustrer le problème.Au lieu de gaspiller cet effort, j'ai ajouté la solution et je la poste maintenant ici pour peut-être aider un futur visiteur avec le même problème.
Le test utilise une géodatabase fichier et a été exécuté sur ArcGIS 10.2.2 for Desktop.
La sortie est:
la source