SQL-Ausdruck zum Suchen von Zeichenfolgen einschließlich Buchstaben in ArcGIS Desktop?

8

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?)

jonatr
quelle
3
Bist du sicher, dass du nicht einfach deinen Kopf auf deine Tastatur geschlagen und das herausgeknallt hast? : P
blah238
1
Unglücklicherweise nicht.
Jonatr

Antworten:

2

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 MyColumnNamen in Ihren echten Spaltennamen zu ändern .

UPPER("MyColumn") LIKE('%A%') OR
UPPER("MyColumn") LIKE('%B%') OR
UPPER("MyColumn") LIKE('%C%') OR
UPPER("MyColumn") LIKE('%D%') OR
UPPER("MyColumn") LIKE('%E%') OR
UPPER("MyColumn") LIKE('%F%') OR
UPPER("MyColumn") LIKE('%G%') OR
UPPER("MyColumn") LIKE('%H%') OR
UPPER("MyColumn") LIKE('%I%') OR
UPPER("MyColumn") LIKE('%J%') OR
UPPER("MyColumn") LIKE('%K%') OR
UPPER("MyColumn") LIKE('%L%') OR
UPPER("MyColumn") LIKE('%M%') OR
UPPER("MyColumn") LIKE('%N%') OR
UPPER("MyColumn") LIKE('%O%') OR
UPPER("MyColumn") LIKE('%P%') OR
UPPER("MyColumn") LIKE('%Q%') OR
UPPER("MyColumn") LIKE('%R%') OR
UPPER("MyColumn") LIKE('%S%') OR
UPPER("MyColumn") LIKE('%T%') OR
UPPER("MyColumn") LIKE('%U%') OR
UPPER("MyColumn") LIKE('%V%') OR
UPPER("MyColumn") LIKE('%W%') OR
UPPER("MyColumn") LIKE('%X%') OR
UPPER("MyColumn") LIKE('%Y%') OR
UPPER("MyColumn") LIKE('%Z%')

Für etwas komplexeres würde ich stattdessen reguläre Ausdrücke in einem SearchCursor in Python verwenden (siehe reModul ) oder die Daten in eine reale Datenbank stellen und die spezifischen Funktionen zur Zeichenfolgensuche verwenden.

blah238
quelle
2

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 .

Geben Sie hier die Bildbeschreibung ein

Kirk Kuykendall
quelle
Können Sie angeben, was Sie unter "String-Matching-Tests in einem vorlogischen Codeblock" verstehen?
Jonatr
Aktivieren Sie im Feldrechner das Kontrollkästchen "Codeblock anzeigen". Sie sollten dann in der Lage sein, VBA-Zeichenfolgenmanipulationsfunktionen zu verwenden. Lassen Sie sich nicht zu sehr mitreißen, VBA geht um 10.0 weg. Siehe diesen KB-Artikel .
Kirk Kuykendall
2

In eine persönliche Geodatabase konvertieren.

Platzhalter:

  • Fragezeichen ?= ein beliebiges Alpha-Zeichen
  • Nummernzeichen #= ein beliebiges numerisches Zeichen

[Punktname] wie "12?" sollte 12A, 12b, 12c usw. zurückgeben.

gkh
quelle
0

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

Christian4145
quelle