ArcGIS在字段的特定部分查询特定字符


9

使用ArcGIS 10.2.2,我在SDE属性表中有一个字符串字段。我需要帮助来创建查询以选择在字段的第6个和第7个字符中都为零的所有记录(即1995-0023A)。为了帮助我更好地理解这种查询,我还希望能够看到一个查询,该查询选择字段的第6个字符中的零记录。然后,我可以使用“ and”子句并将其复制以选择第7个字符。

我试过了的变体, "FIELD1" LIKE '%00_______'但是它没有选择字符串中正确位置的双零记录。


我已经尝试了像“%00 _______”这样的“ FIELD1”变体,但是它没有选择字符串中正确位置带有双零的记录。
史蒂夫(Steve)

"FIELD1" LIKE '_____00%'什么?这将使用五个字符通配符,然后使用两个零,然后对于字符串的其余部分使用另一个通配符。这些是什么类型的数据库?SQL Server,Oracle,还有其他东西吗?请编辑您的问题,以包括上面评论中的信息以及有关您的数据库的详细信息(版本发布等)
Midavalo

“ field_name”类似于“%00%”,如果有帮助,它将返回所有彼此相邻的双零的字段不使用第6或第7位。
NULL.Dude

下划线_在某些数据库中用作单个字符位置通配符。百分比%是所有字符位置的通配符。
Midavalo

1
谢谢大家,好像我查询被逆转了。Midavalo的建议有效:FIELD1喜欢“ _____ 00%”。它是一个Oracle数据库。
史蒂夫(Steve)

Answers:


12

下划线_在某些数据库中用作单个字符位置通配符。百分比%是所有字符位置的通配符。

因此,"FIELD1" LIKE '_____00%'根据数据库的类型,类似的方法应该可以工作。这将使用五个字符通配符,然后使用两个零,然后对于字符串的其余部分使用另一个通配符。


在MS SQL Server DB中也可以使用吗?
NULL.Dude

1
@Joe是的-我过去在SQL Server中曾使用过这种方法进行类似的查询,但现在无法测试。
Midavalo

3

下面将选择在第6个字符位置和第7个字符位置都具有零的所有记录。

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

在表达式的第一部分中有五个下划线在零之前,然后在第二部分中有六个下划线在零之前。下划线是“通配符”,要求任何字符都可以出现(可以是空格,数字,字母,符号等)。百分比(%)通配符允许跟随任何字符(也不允许跟随任何字符-不需要任何字符)。

一种更简洁的查询方式是

FIELDNAME like '_____00%'

-1

这是RDBMS依赖的,尽管以下内容最适用:

SUBSTRING(字段名称,6,2)='00'


欢迎使用GIS SE!作为新用户,请参观以了解我们的重点问答格式。你的工作成功了吗?以我的经验,SUBSTRING()从未在ArcMap的有限SQL中工作过。这是您使用它的地方,还是您在其他地方使用它?您可以编辑答案以扩展此内容吗?
Midavalo

OP指出这是在SDE中,而不是文件地理数据库,mdb或shapefile。SDE指示RDBMS。ArcMap查询基于SQL的where部分,基于SDE所在的特定RDBMS(重要的是要知道数据所在的数据库类型,因为语法可能会有所不同)。是的,作为SDE管理员,在我20多年的时间里,我已经多次成功地执行了此操作。我把它作为一个选项,因为不是所有的RDBMS都会使用'_'选项。我的解决方案过于简单,可以说是过时的,但是它可以在SDE环境中使用。
CaptRay

我问这个问题,因为我上周对此进行了测试,但没有成功。我可能做错了,但对我没有用。
Midavalo

在SDE中?如果是这样,您的SDE坐在哪个RDBMS上?确实,我很好奇,因为RDBMS环境引起了我的兴趣,尤其是对于差异。在发布之前,我也对其进行了测试(在Oracle和SQL Server上成功)。SUBSTRING对shapefile无效。它将适用于文件地理数据库。
CaptRay

顺便说一句,Oracle的语法是SUBSTR。
CaptRay
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.