ArcGIS requête caractère (s) spécifique (s) dans une partie spécifique d'un champ

9

À l'aide d'ArcGIS 10.2.2, j'ai un champ de chaîne dans une table attributaire SDE. J'ai besoin d'aide pour créer une requête pour sélectionner tous les enregistrements qui ont un zéro dans les 6e et 7e caractères du champ (par exemple 1995-0023A). Pour m'aider à mieux comprendre ce type de requête, j'aimerais également pouvoir voir une requête qui sélectionne les enregistrements avec un zéro dans le 6e caractère du champ uniquement. Je peux ensuite utiliser la clause "et" et la dupliquer pour sélectionner également le 7ème caractère.

J'ai essayé des variantes de "FIELD1" LIKE '%00_______'mais il ne sélectionne pas les enregistrements avec les doubles zéros au bon endroit dans la chaîne.

Steve
la source
J'ai essayé des variations de "FIELD1" COMME '% 00 _______' mais il ne sélectionne pas les enregistrements avec les doubles zéros au bon endroit dans la chaîne.
Steve
Quelque chose comme ça "FIELD1" LIKE '_____00%'? Cela utiliserait cinq caractères génériques, puis vos deux zéros, puis un autre caractère générique pour le reste de la chaîne. Dans quel type de base de données se trouvent-elles? SQL Server, Oracle, autre chose? Veuillez modifier votre question pour inclure les informations de votre commentaire ci-dessus, et des détails sur votre base de données (version, etc.)
Midavalo
"field_name" LIKE '% 00%' cela retournera tous les champs avec des zéros doubles côte à côte n'utilise pas la 6ème ou la 7ème position si cela aide.
NULL.Dude
Un trait de soulignement _est utilisé dans certaines bases de données en tant que caractère générique de caractère unique. Un pourcentage %est un caractère générique pour tous les emplacements de personnage.
Midavalo
1
Merci les gars, on dirait que la requête a été inversée. La suggestion de Midavalo a fonctionné: FIELD1 LIKE '_____ 00%'. C'est une base de données Oracle.
Steve

Réponses:

12

Un trait de soulignement _est utilisé dans certaines bases de données en tant que caractère générique de caractère unique. Un pourcentage %est un caractère générique pour tous les emplacements de personnage.

Par conséquent, quelque chose comme cela "FIELD1" LIKE '_____00%'devrait fonctionner, selon le type de base de données. Cela utiliserait cinq caractères génériques, puis vos deux zéros, puis un autre caractère générique pour le reste de la chaîne.

Midavalo
la source
cela fonctionnerait-il également dans MS SQL Server DB?
NULL.Dude
1
@Joe Oui, cela devrait - J'ai déjà utilisé cette méthode pour des requêtes similaires dans SQL Server, mais je ne peux pas le tester pour le moment.
Midavalo
3

Ce qui suit sélectionnerait tous les enregistrements qui ont un zéro dans la position du 6ème caractère ainsi que dans la position du 7ème caractère.

FIELDNAME like '_____0%' and FIELDNAME like '______0%'

Il y a cinq traits de soulignement précédant le zéro dans la première partie de l'expression, puis six traits de soulignement précédant le zéro dans la deuxième partie. Le trait de soulignement est un «caractère générique» qui nécessite la présence de n'importe quel caractère (peut être un espace, un nombre, une lettre, un symbole, etc.). Le caractère générique de pourcentage (%) permet à tout ce qui suit (ne permet également rien à suivre - ne nécessite aucun caractère).

Une façon plus succincte d'interroger ce serait

FIELDNAME like '_____00%'
Matt Goodman
la source
-1

Cela dépend du SGBDR, bien que les éléments suivants devraient fonctionner dans la plupart des cas:

SUBSTRING (fieldname, 6, 2) = '00'

CaptRay
la source
Bienvenue dans GIS SE! En tant que nouvel utilisateur, veuillez faire le tour pour en savoir plus sur notre format de questions / réponses ciblé. Avez-vous réussi ce travail? D'après mon expérience, cela SUBSTRING()n'a jamais fonctionné dans le SQL limité d'ArcMap. Est-ce là que vous l'utilisez ou l'utilisez-vous ailleurs? Pourriez-vous modifier votre réponse pour développer cela?
Midavalo
L'OP a déclaré qu'il s'agissait de SDE, et non d'une géodatabase fichier, mdb ou shapefile. SDE dicte un SGBDR. La requête ArcMap est basée sur la partie where du SQL, sur la base du SGBDR particulier où le SDE existe (important de savoir dans quel type de base de données les données se trouvent, car la syntaxe peut différer). Oui, j'ai réussi à effectuer cela plusieurs fois au cours de mes 20 ans et plus en tant qu'administrateur SDE. J'ai ajouté ceci en option, car tous les SGBDR n'utiliseront pas l'option '_'. Ma solution est simpliste et sans doute ancienne, mais elle fonctionne dans un environnement SDE.
CaptRay
Ai-je demandé car j'avais testé cette semaine dernière et cela n'a pas fonctionné. Je l'ai peut-être mal fait, mais cela n'a pas fonctionné pour moi.
Midavalo
Dans SDE? Si oui, sur quel SGBDR votre SDE siège-t-il? Vraiment, je suis curieux, car les environnements RDBMS m'intriguent, notamment pour les différences. Je l'ai testé (réussi sur Oracle et SQL Server) avant de poster aussi. SUBSTRING ne sera pas valide pour les fichiers de formes. Cela fonctionnera pour les géodatabases fichier.
CaptRay
btw, la syntaxe d'Oracle est SUBSTR.
CaptRay