Ich arbeite an ArcGIS 9.3.1. Ich habe ein Shapefile mit einem Zeichenfolgenfeld, das Punktnamen wie diese enthält:
10
12
12/13
t/9
6577y
1234
12t9
124y67
u9
und so weiter (und ja, ich weiß, es sieht aus wie ein kolossales Durcheinander. Es ist nicht mein Design). Mit WHERE MyColumn LIKE '%Search String%'
Ich kann (mit Auswahl nach Attribut) diejenigen finden, die einen bestimmten Buchstaben oder einen Backslash (/) enthalten.
Wie kann ich alle Werte auswählen, die einen Buchstaben enthalten (in diesem Beispiel: t / 9, 6577y, 12t9, 124y67, u9), ohne Rücksicht darauf, um welchen Buchstaben es sich handelt oder welche Position er hat? (Gibt es eine Möglichkeit, eine Position anzugeben?)
arcgis-desktop
sql
arcgis-9.3
jonatr
quelle
quelle
Antworten:
Für etwas schnelles und (sehr) schmutziges können Sie so etwas verwenden, um alle Datensätze mit einem der Standard-Alphabetzeichen mit 26 Buchstaben zu finden. Verwenden Sie Suchen und Ersetzen in Ihrem bevorzugten Texteditor, um den
MyColumn
Namen in Ihren echten Spaltennamen zu ändern .Für etwas komplexeres würde ich stattdessen reguläre Ausdrücke in einem SearchCursor in Python verwenden (siehe
re
Modul ) oder die Daten in eine reale Datenbank stellen und die spezifischen Funktionen zur Zeichenfolgensuche verwenden.quelle
Sie können Ihrem Shapefile eine ganzzahlige Spalte hinzufügen, die als "MATCH" bezeichnet wird. Verwenden Sie dann den Feldrechner , um String-Matching-Tests in einem vorlogischen Codeblock durchzuführen. Nachdem das Feld Übereinstimmung ausgefüllt wurde, können Sie es mit dem Werkzeug Nach Attributen auswählen auswählen.
Randnotiz: Es ist lange her, aber es schien, als würde INFO eine Pseudospalte unterstützen (war es $ RECSEL?), Mit der Sie Dinge mit einem CALCULATE-Befehl auswählen konnten. Dieser Anwendungsfall weist auf eine Situation hin, in der so etwas hilfreich wäre. IMO, Esri sollte den Feldrechner erweitern, um Pseudospalten für die Auswahl zu unterstützen. Der Feldrechner würde ein boolesches Zielfeld anzeigen, wenn der Benutzer mit der rechten Maustaste auf den unbeschrifteten Block neben der Feldüberschrift der Spalte ganz links klickt.
Update: Wenn Sie einverstanden sind, stimmen Sie bitte für meine Idee .
quelle
In eine persönliche Geodatabase konvertieren.
Platzhalter:
?
= ein beliebiges Alpha-Zeichen#
= ein beliebiges numerisches Zeichen[Punktname] wie "12?" sollte 12A, 12b, 12c usw. zurückgeben.
quelle
Wenn sich Ihre Daten in MS-SQL befinden, versuchen Sie Bereiche innerhalb von Suchausdrücken wie
... where col like '%[a-z]%'
oder eine Zahl nach einer Zeichenfolge mit einem beliebigen Zeichen zwischen:
`... wo col wie '% [az] _ [0-9]%'
Wenn Sie nach einem '-' suchen müssen, setzen Sie es am Anfang des Suchstrings wie
... where col like '%[-a-z0-9]%'
würde mit '-' oder einem Buchstaben oder einer Zahl übereinstimmen
quelle