伙计们我有一张包含以下数据的表
F$2051032568
F$2051032568
22342342343
3242432432432
5745745
45734554
当我编写oracle sql select查询时,我想只获取不以 F $
开头的数据22342342343
3242432432432
5745745
45734554
请告诉我,如何做到这一点。
实际上它非常棘手,在sql查询的where条件中没有使用$ ,我只需要获取那些不匹配的数据F$
答案 0 :(得分:5)
尝试:
select col1 from tabl1 where col1 not like '%F$%';
我不确定,如果我理解你的编辑:
select col1 from tabl1 where col1 not like ('%F' || chr(36) || '%');
答案 1 :(得分:1)
如果您使用的是Perl等脚本语言,$%
扩展为某些内容(可能是''),则需要转义$。
例如,再次在Perl中,以下内容不起作用:
$select_statment = "select ... from ...where the Column not like '%F$%'";
但这会:
$select_statment = "select ... from ...where the Column not like '%F\$%'";
答案 2 :(得分:0)
select col1
from tabl1
where instr(col1,'F$')=0
如果它只是除了F $之外的数字,那么你可以这样做:
select col1
from tabl1
where instr(col1,'F')=0
答案 3 :(得分:0)
假设你只需要数字部分......
您可以创建一个使用TO_NUMBER
函数评估行值的函数。
如果它的无效文本,则oracle将抛出ORA-01722: invalid number
异常
在函数中处理它,然后您可以在选择查询中使用该函数。
答案 4 :(得分:0)
使用regexp_like可以直接在查询位置包含正则表达式。
假设您只想使用由数字组成的记录
select col1 from tab1
where regexp_like(col1, '^[[:digit:]]*$');
如果你想匹配不是数字的F +,你可以使用
select col1 from tab1
where not regexp_like(col1, 'F[^[:digit:]]');