Bei einer Standard-LIKE-Abfrage für eine Oracle-basierte ArcSDE-Feature-Class repräsentiert der Unterstrich einen Platzhalter für ein einzelnes Zeichen, wenn er mit einer Zeichenfolge verwendet wird.
Ich versuche, eine Definitionsabfrage zu erstellen, um eine Textzeichenfolge zu finden, die mit 4 Ziffern beginnt, gefolgt von einem Unterstrich.
Weiß jemand, wie ich ein Unterstrichzeichen selbst in einer Abfrage angeben würde oder ob / was das Escapezeichen sein könnte?
Die Antwort von MDHald funktioniert für Datei-Geodatabases, aber mein Fall ist spezifisch für Oracle. Es wurde fälschlicherweise angenommen, dass die ArcSDE- und die Datei-Geodatabase-Abfrage in diesem Fall gleich funktionieren würden.
\
Ich glaube, dass dies auch bei Oracle der Fall ist.\_
Wenn Sie nach dem Unterstrich suchen, sollten Sie danach suchen .LIKE
(obwohl Sie LIKE in Ihrer Frage erwähnen) -CABLE LIKE '____\_%'
. Ich werde hier spielen, obwohl ich SQL Server anstelle von Oracle verwende, sodass möglicherweise andere Ergebnisse erzielt werdenCABLE LIKE '____\_%' ESCAPE '\'
- aus der SQL-Referenz für Abfrageausdrücke, die in ArcGIS verwendet werden - Desktop-HilfeAntworten:
Hat es geschafft, die Antwort aufzuspüren.
Sie können ein ESCAPE-Zeichen in der Abfrage angeben, z.
MY_FIELD LIKE '____ $ _%' ESCAPE '$'
Dies sucht nach genau 4 Zeichen, gefolgt von einem Unterstrich und allem anderen danach.
Die Dokumentation finden Sie auf dieser Seite: http://desktop.arcgis.com/de/arcmap/10.3/map/working-with-layers/sql-reference-for-query-expressions-used-in-arcgis.htm
Sie sind sich nicht sicher, wie weit zurück oder für welche Versionen dies gültig ist, aber es funktioniert für ArcGIS Desktop 10.3.
Auszug aus der Dokumentation:
quelle
Sie müssen CHAR_LENGTH und SUBSTRING verwenden, damit dies funktioniert. Es würde wie folgt aussehen:
Dabei ist Ihr Feldname = der Name Ihres Feldes.
Löschen Sie jedoch nicht das "" im Code. Kopieren Sie wie es ist und ersetzen Sie nur den Text Ihres Feldnamens.
quelle
Ich bin auf diese Fragen und Antworten gestoßen, die mir geholfen haben, herauszufinden, warum ich keine where-Klausel für einen ArcPy-Suchcursor verwenden konnte, die den Cursor nur auf die Datensätze beschränken konnte, die einen Unterstrich (
_
) in einem bestimmten Textfeld enthielten .Als ich es fand, hatte ich bereits ein Code-Snippet entwickelt, um das Problem zu veranschaulichen. Anstatt diesen Aufwand zu verschwenden, habe ich die Lösung hinzugefügt und veröffentliche sie jetzt hier, um möglicherweise einem zukünftigen Besucher mit demselben Problem zu helfen.
Der Test verwendet eine Datei-Geodatabase und wurde unter ArcGIS 10.2.2 für Desktop ausgeführt.
Die Ausgabe ist:
quelle