ArcGIS consulta caracteres específicos na parte específica de um campo


9

Usando o ArcGIS 10.2.2, tenho um campo de string em uma tabela de atributos SDE. Preciso de ajuda para criar uma consulta para selecionar todos os registros com zero no sexto e no sétimo caractere do campo (por exemplo, 1995-0023A). Para me ajudar a entender melhor esse tipo de consulta, também gostaria de ver uma consulta que seleciona registros com zero apenas no sexto caractere do campo. Posso então usar a cláusula "and" e duplicá-la para selecionar também o sétimo caractere.

Eu tentei variações de, "FIELD1" LIKE '%00_______'mas ele não seleciona registros com os zeros duplos no lugar correto da string.


Eu tentei variações de "FIELD1" LIKE '% 00 _______', mas ele não seleciona registros com os zeros duplos no lugar correto na string.
24517 Steve Steve

Algo como "FIELD1" LIKE '_____00%'? Isso usaria caracteres curinga de cinco caracteres, depois seus dois zeros e outro curinga para o restante da string. Em que tipo de banco de dados eles estão? SQL Server, Oracle, algo mais? Por favor edite sua pergunta para incluir a informação do seu comentário acima, e detalhes sobre seu banco de dados (lançamento da versão etc.)
Midavalo

"field_name" LIKE '% 00%' retornará todos os campos com zeros duplos um ao lado do outro e não usará a sexta ou a sétima posição, se isso ajudar.
NULL.Dude

Um sublinhado _é usado em alguns bancos de dados como um curinga de local de caractere único. Uma porcentagem %é curinga para todos os lugares dos personagens.
Midavalo

11
Obrigado pessoal, parece que a consulta foi revertida. A sugestão de Midavalo funcionou: CAMPO1 COMO '_____ 00%'. É um banco de dados Oracle.
24517 Steve Steve

Respostas:


12

Um sublinhado _é usado em alguns bancos de dados como um curinga de local de caractere único. Uma porcentagem %é curinga para todos os lugares dos personagens.

Portanto, algo como "FIELD1" LIKE '_____00%'deve funcionar, dependendo do tipo de banco de dados. Isso usaria caracteres curinga de cinco caracteres, depois seus dois zeros e outro curinga para o restante da string.


isso funcionaria no MS SQL Server DB também?
NULL.Dude

11
@ Joe Sim, deveria - eu usei esse método para consultas semelhantes no passado no SQL Server, mas não posso testar isso agora.
Midavalo

3

A seguir, você selecionaria todos os registros com zero na posição do 6º caractere e na posição do 7º caractere.

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

Existem cinco sublinhados que precedem o zero na primeira parte da expressão e, em seguida, seis sublinhados que precedem o zero na segunda parte. O sublinhado é um 'curinga' que requer a presença de qualquer caractere (pode ser um espaço, um número, uma letra, um símbolo etc.). O curinga de porcentagem (%) permite que qualquer coisa a seguir (também não permite nada a seguir - não requer nenhum caractere).

Uma maneira mais sucinta de consultar isso seria

FIELDNAME like '_____00%'

-1

Isso depende do RDBMS, embora o seguinte deva funcionar na maioria:

SUBSTRING (nome do campo, 6, 2) = '00'


Bem-vindo ao GIS SE! Como novo usuário, faça o tour para aprender sobre o nosso formato de perguntas e respostas focado. Você teve esse trabalho com sucesso? Na minha experiência, o SUBSTRING()nunca funcionou no SQL limitado do ArcMap. É aqui que você o usa ou em outro lugar? Você poderia editar sua resposta para expandir isso?
Midavalo

O OP afirmou que isso estava no SDE, não em um geodatabase de arquivo, mdb ou shapefile. O SDE determina um RDBMS. A consulta do ArcMap é baseada na parte where do SQL, com base no RDBMS específico onde o SDE existe (importante saber em que tipo de banco de dados os dados estão, pois a sintaxe pode ser diferente). Sim, eu tive esse desempenho com êxito várias vezes nos meus mais de 20 anos como administrador da SDE. Joguei isso como uma opção, pois nem todos os RDBMSs utilizarão a opção '_'. Minha solução é simplista e sem dúvida antiga, mas funciona em um ambiente SDE.
CaptRay

Perguntei como havia testado essa semana passada e não funcionou. Eu posso ter feito errado, mas não funcionou para mim.
Midavalo

Na SDE? Em caso afirmativo, em qual RDBMS seu SDE se baseia? Na verdade, estou curioso, pois os ambientes RDBMS me intrigam, principalmente pelas diferenças. Eu testei (bem-sucedido no Oracle e SQL Server) antes de postar também. SUBSTRING será inválido para shapefiles. Ele funcionará para geodatabases de arquivos.
CaptRay

Aliás, a sintaxe do Oracle é SUBSTR.
CaptRay
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.