4

我想选择所有在第 11 个字符中有下划线字符的记录,所以我试试这个:

SELECT * FROM "BOM_SUB_LEVEL" where TOP_CODE like '%%%%%%%%%%_%%%'

但这并没有按预期工作,有人可以帮忙吗?

4

7 回答 7

15

只需使用“SUBSTRING”功能:

SELECT * FROM "BOM_SUB_LEVEL" where SUBSTRING(TOP_CODE, 11, 1) = "_"

马克

于 2009-08-13T19:22:45.667 回答
11

对于单个字符通配符,请使用_. 对于多个字符通配符,请使用%. 要摆脱 的“真实”外观_,请使用\_(感谢比尔!)。

试试下面的代码:

SELECT * FROM "BOM_SUB_LEVEL" where TOP_CODE like '___________\_%'

为了进一步详细说明 Dav 的评论,请注意 '%%%' 与 '%' 完全相同,因为根据定义,'%' 涵盖多个字符。

于 2009-08-13T19:22:03.533 回答
2

pervasive 使用 _ 匹配任何单个字符,使用 \_ 实际匹配下划线。

所以选择将是:

SELECT * FROM "BOM_SUB_LEVEL" where TOP_CODE like '___________\_%' 
于 2009-08-13T19:25:57.830 回答
1

LIKE % 可以表示任意数量的字符,使用 LIKE _ 表示一个。由于您要查找下划线,因此需要使用 ! 对其进行转义。

SELECT * FROM BOM_SUB_LEVEL WHERE TOP_CODE LIKE '__________!_%'
于 2009-08-13T19:24:19.313 回答
0

% 不是每个字符的通配符,它​​是字符串通配符的开头和结尾。

即,如果我想找到所有包含“汽车”的行,我会这样做:

选择 * from myTable where myCol LIKE '%car%'

如果我只想要以汽车开头的行:

选择 * from myTable where myCol LIKE 'car%'

并以汽车结束:

选择 * from myTable where myCol LIKE '%car'

于 2009-08-13T19:23:35.790 回答
0

% 是通配符,可以替换字符或字符组合。利用 ?而是替换单个字符。

于 2009-08-13T19:23:41.920 回答
0

你可以尝试类似的东西:(玩数字,我没有普遍的测试)

SELECT * 
  FROM BOM_SUB_LEVEL 
 where SUBSTRING(TOP_CODE, 11,1) = '-'
于 2009-08-13T19:25:14.430 回答