ArcGIS consulta caracteres específicos en una parte específica de un campo

9

Usando ArcGIS 10.2.2, tengo un campo de cadena en una tabla de atributos SDE. Necesito ayuda para crear una consulta para seleccionar todos los registros que tienen un cero en el sexto y séptimo carácter del campo (es decir, 1995-0023A). Para ayudarme a comprender mejor este tipo de consulta, también me gustaría poder ver una consulta que seleccione registros con un cero solo en el sexto carácter del campo. Entonces puedo usar la cláusula "y" y duplicarla para seleccionar el séptimo carácter también.

He intentado variaciones de "FIELD1" LIKE '%00_______'pero no selecciona registros con los ceros dobles en el lugar correcto de la cadena.

Steve
fuente
He intentado variaciones de "FIELD1" LIKE '% 00 _______' pero no selecciona registros con los ceros dobles en el lugar correcto de la cadena.
Steve
Algo como "FIELD1" LIKE '_____00%'? Eso usaría comodines de cinco caracteres, luego sus dos ceros, luego otro comodín para el resto de la cadena. ¿En qué tipo de base de datos están estos? SQL Server, Oracle, ¿algo más? Por favor, editar su pregunta para incluir la información de su comentario anterior, y detalles acerca de su base de datos (versión de lanzamiento, etc.)
Midavalo
"field_name" LIKE '% 00%' esto devolverá todos los campos con ceros dobles uno al lado del otro no usa la sexta o séptima posición si eso ayuda.
NULL
Un guión bajo _se utiliza en algunas bases de datos como un comodín de lugar de un solo carácter. Un porcentaje %es comodín para todos los lugares de los personajes.
Midavalo
1
Gracias chicos, parece que tuve la consulta invertida. La sugerencia de Midavalo funcionó: FIELD1 LIKE '_____ 00%'. Es un Oracle DB.
Steve

Respuestas:

12

Un guión bajo _se utiliza en algunas bases de datos como un comodín de lugar de un solo carácter. Un porcentaje %es comodín para todos los lugares de los personajes.

Por lo tanto, algo así "FIELD1" LIKE '_____00%'debería funcionar, dependiendo del tipo de base de datos. Eso usaría comodines de cinco caracteres, luego sus dos ceros, luego otro comodín para el resto de la cadena.

Midavalo
fuente
¿funcionaría esto también en MS SQL Server DB?
NULL.Dude
1
@ Joe Sí, debería: he usado este método para consultas similares en el pasado en SQL Server, pero no puedo probarlo en este momento.
Midavalo
3

Lo siguiente seleccionaría todos los registros que tienen un cero en la posición del sexto carácter, así como en la posición del séptimo carácter.

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

Hay cinco guiones bajos que preceden al cero en la primera parte de la expresión y luego seis guiones bajos que preceden al cero en la segunda parte. El guión bajo es un 'comodín' que requiere la presencia de cualquier carácter (puede ser un espacio, un número, una letra, un símbolo, etc.). El comodín de porcentaje (%) permite que todo siga (también no permite que siga nada, no requiere ningún carácter).

Una forma más sucinta de consultar esto sería

FIELDNAME like '_____00%'
Matt Goodman
fuente
-1

Esto depende de RDBMS, aunque lo siguiente debería funcionar en la mayoría:

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

CaptRay
fuente
¡Bienvenido a GIS SE! Como nuevo usuario, realice el recorrido para conocer nuestro formato de preguntas y respuestas. ¿Has tenido este trabajo con éxito? En mi experiencia, SUBSTRING()nunca funcionó en el SQL limitado de ArcMap. ¿Es aquí donde lo usas o lo usas en otro lugar? ¿Podría editar su respuesta para ampliar esto?
Midavalo
El OP declaró que esto estaba en SDE, no en una geodatabase de archivos, mdb o shapefile. SDE dicta un RDBMS. La consulta de ArcMap se basa en la parte de dónde del SQL, en función del RDBMS particular donde existe el SDE (importante saber en qué tipo de base de datos están los datos, ya que la sintaxis puede diferir). Sí, he tenido un desempeño exitoso varias veces en mis más de 20 años como administrador de SDE. He incluido esto como una opción, ya que no todos los RDBMS utilizarán la opción '_'. Mi solución es simplista y posiblemente antigua, pero funciona en un entorno SDE.
CaptRay
Pregunté como había probado esta semana pasada y no funcionó. Puede que lo haya hecho mal, pero no funcionó para mí.
Midavalo
En SDE? Si es así, ¿en qué RDBMS se encuentra su SDE? En verdad, tengo curiosidad, ya que los entornos RDBMS me intrigan, particularmente por las diferencias. Lo probé (exitoso en Oracle y SQL Server) antes de publicar también. SUBSTRING no será válido para shapefiles. Funcionará para geodatabases de archivos.
CaptRay
por cierto, la sintaxis de Oracle es SUBSTR.
CaptRay