Para una consulta LIKE estándar contra una clase de entidad ArcSDE basada en Oracle, el carácter de subrayado representa un comodín de carácter único cuando se usa con una cadena.
Estoy tratando de imponer una consulta de definición para encontrar una cadena de texto que comience con 4 dígitos seguidos exactamente por un carácter de subrayado.
¿Alguien sabe cómo especificaría un carácter de subrayado en una consulta o si / cuál podría ser el carácter de escape?
La respuesta de MDHald funciona para geodatabases de archivos, pero mi caso es específico de Oracle. Asumió falsamente que ArcSDE y la consulta de geodatabase de archivos funcionarían igual para este caso.
\
; creo que este también es el caso con Oracle, por lo que querrá buscar\_
si busca el guión bajo.LIKE
(aunque mencione LIKE en su pregunta) -CABLE LIKE '____\_%'
.CABLE LIKE '____\_%' ESCAPE '\'
: desde la referencia SQL para las expresiones de consulta utilizadas en ArcGIS - Desktop HelpRespuestas:
Lograron rastrear la respuesta.
Puede especificar un carácter ESCAPE en la consulta, como:
MY_FIELD LIKE '____ $ _%' ESCAPE '$'
Esto buscará exactamente 4 caracteres seguidos de un carácter de subrayado más cualquier otra cosa después de eso.
Encontré la documentación en esta página: http://desktop.arcgis.com/en/arcmap/10.3/map/working-with-layers/sql-reference-for-query-expressions-used-in-arcgis.htm
No estoy seguro de cuánto tiempo atrás o para qué versiones es válido, pero funciona para ArcGIS Desktop 10.3.
Extracto de la documentación:
fuente
Deberá emplear CHAR_LENGTH y SUBSTRING para que esto funcione. Se vería de la siguiente manera:
donde yourfieldname = el nombre de su campo.
Sin embargo, no elimine el "" en el código. Copie tal cual y reemplace solo el texto yourfieldname.
fuente
Encontré estas preguntas y respuestas que me ayudaron a resolver por qué no pude usar una cláusula where en un cursor de búsqueda ArcPy que podía restringir el cursor a solo aquellos registros que contenían un guión bajo (
_
) en un campo de texto en particular.Cuando lo descubrí, ya había desarrollado un fragmento de código para ilustrar el problema, así que, en lugar de desperdiciar ese esfuerzo, le agregué la solución y ahora lo estoy publicando aquí para quizás ayudar a un futuro visitante con el mismo problema.
La prueba utiliza una geodatabase de archivos y se ejecutó en ArcGIS 10.2.2 for Desktop.
El resultado es:
fuente