ArcGIS fragt bestimmte Zeichen in einem bestimmten Teil eines Felds ab


9

Mit ArcGIS 10.2.2 habe ich ein Zeichenfolgenfeld in einer SDE-Attributtabelle. Ich benötige Hilfe beim Erstellen einer Abfrage, um alle Datensätze auszuwählen, die im 6. und 7. Zeichen des Felds eine Null haben (dh 1995-0023A). Um mir zu helfen, diese Art von Abfrage besser zu verstehen, möchte ich auch eine Abfrage sehen können, die Datensätze mit einer Null nur im 6. Zeichen des Feldes auswählt. Ich kann dann die "und" -Klausel verwenden und sie duplizieren, um auch das 7. Zeichen auszuwählen.

Ich habe Variationen von ausprobiert, "FIELD1" LIKE '%00_______'aber es werden keine Datensätze mit den doppelten Nullen an der richtigen Stelle in der Zeichenfolge ausgewählt.


Ich habe Variationen von "FIELD1" wie '% 00 _______' ausprobiert, aber es werden keine Datensätze mit den doppelten Nullen an der richtigen Stelle in der Zeichenfolge ausgewählt.
Steve

So etwas wie "FIELD1" LIKE '_____00%'? Das würde fünf Platzhalter verwenden, dann Ihre zwei Nullen, dann einen weiteren Platzhalter für den Rest der Zeichenfolge. In welcher Art von Datenbank befinden sich diese? SQL Server, Oracle, noch etwas? Bitte bearbeiten Sie Ihre Frage, um die Informationen aus Ihrem obigen Kommentar und Details zu Ihrer Datenbank (Versionsversion usw.) aufzunehmen
Midavalo

"field_name" LIKE '% 00%' gibt alle Felder mit doppelten Nullen nebeneinander zurück und verwendet nicht die 6. oder 7. Position, wenn dies hilft.
NULL.Dude

_In einigen Datenbanken wird ein Unterstrich als Platzhalter für einzelne Zeichen verwendet. Ein Prozent %ist ein Platzhalter für alle Zeichenplätze.
Midavalo

1
Danke Jungs, es sieht so aus, als hätte ich die Abfrage umgekehrt. Midavalos Vorschlag hat funktioniert: FELD 1 WIE '_____ 00%'. Es ist eine Oracle-Datenbank.
Steve

Antworten:


12

_In einigen Datenbanken wird ein Unterstrich als Platzhalter für einzelne Zeichen verwendet. Ein Prozent %ist ein Platzhalter für alle Zeichenplätze.

Daher sollte so etwas "FIELD1" LIKE '_____00%'je nach Datenbanktyp funktionieren. Das würde fünf Platzhalter verwenden, dann Ihre zwei Nullen, dann einen weiteren Platzhalter für den Rest der Zeichenfolge.


Würde dies auch in MS SQL Server DB funktionieren?
NULL.Dude

1
@ Joe Ja, das sollte es - Ich habe diese Methode in der Vergangenheit für ähnliche Abfragen in SQL Server verwendet, kann dies jedoch derzeit nicht testen.
Midavalo

3

Im Folgenden werden alle Datensätze ausgewählt, die sowohl an der 6. Zeichenposition als auch an der 7. Zeichenposition eine Null haben.

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

Im ersten Teil des Ausdrucks stehen fünf Unterstriche vor der Null und im zweiten Teil sechs Unterstriche vor der Null. Der Unterstrich ist ein Platzhalter, für den ein beliebiges Zeichen vorhanden sein muss (kann ein Leerzeichen, eine Zahl, ein Buchstabe, ein Symbol usw. sein). Mit dem Platzhalter in Prozent (%) kann alles folgen (es darf auch nichts folgen - es ist kein Zeichen erforderlich).

Eine prägnantere Möglichkeit, dies abzufragen, wäre

FIELDNAME like '_____00%'

-1

Dies ist RDBMS-abhängig, obwohl Folgendes in den meisten Fällen funktionieren sollte:

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


Willkommen bei der GIS SE! Nehmen Sie als neuer Benutzer an der Tour teil , um mehr über unser fokussiertes Q & A-Format zu erfahren. Haben Sie diese Arbeit erfolgreich gehabt? Nach meiner Erfahrung hat das SUBSTRING()in ArcMaps eingeschränktem SQL nie funktioniert. Verwenden Sie es hier oder verwenden Sie es woanders? Könnten Sie Ihre Antwort bearbeiten , um dies zu erweitern?
Midavalo

Das OP gab an, dass dies in SDE war, nicht in einer Datei-Geodatabase, einer MDB oder einem Shapefile. SDE diktiert ein RDBMS. Die ArcMap-Abfrage basiert auf dem where-Teil der SQL, basierend auf dem bestimmten RDBMS, in dem die SDE vorhanden ist (wichtig, um zu wissen, in welchem ​​Datenbanktyp sich die Daten befinden, da die Syntax unterschiedlich sein kann). Ja, ich habe dies in meinen über 20 Jahren als SDE-Administrator mehrmals erfolgreich durchgeführt. Ich habe dies als Option eingeführt, da nicht alle RDBMS die Option '_' verwenden. Meine Lösung ist simpel und wohl alt, funktioniert aber in einer SDE-Umgebung.
CaptRay

Ich fragte, als ich diese letzte Woche getestet hatte und es nicht funktionierte. Ich habe es vielleicht falsch gemacht, aber es hat bei mir nicht funktioniert.
Midavalo

In SDE? Wenn ja, auf welchem ​​RDBMS sitzt Ihre SDE? Ich bin wirklich neugierig, da mich die RDBMS-Umgebungen besonders für Unterschiede faszinieren. Ich habe es getestet (erfolgreich auf Oracle und SQL Server), bevor ich es veröffentlicht habe. SUBSTRING ist für Shapefiles ungültig. Es funktioniert für Datei-Geodatabases.
CaptRay

Übrigens lautet die Syntax von Oracle SUBSTR.
CaptRay
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.