Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Oracle sql查询以仅选择具有匹配表达式的列_Sql_Oracle - Fatal编程技术网

Oracle sql查询以仅选择具有匹配表达式的列

Oracle sql查询以仅选择具有匹配表达式的列,sql,oracle,Sql,Oracle,伙计们,我有一个包含以下数据的表格 F$2051032568 F$2051032568 22342342343 3242432432432 5745745 45734554 在编写oracle sql select查询时,我只想获取不以F开头或不包含F的数据$ 请让我知道,如何做到这一点 实际上这很棘手,如果在sql查询的where条件中不使用$,我只需要获取与F$不匹配的数据。试试: select col1 from tabl1 where col1 not like '%F$%'; 我不

伙计们,我有一个包含以下数据的表格

F$2051032568
F$2051032568
22342342343
3242432432432
5745745
45734554
在编写oracle sql select查询时,我只想获取不以F开头或不包含F的数据$

请让我知道,如何做到这一点

实际上这很棘手,如果在sql查询的where条件中不使用$,我只需要获取与F$不匹配的数据。

试试:

select col1 from tabl1 where col1 not like '%F$%';
我不确定,如果我理解你的编辑:

select col1 from tabl1 where col1 not like ('%F' || chr(36) || '%');
尝试:

我不确定,如果我理解你的编辑:

select col1 from tabl1 where col1 not like ('%F' || chr(36) || '%');
如果只有F$以外的数字,则您可以执行以下操作:

select col1 
from tabl1  
where instr(col1,'F')=0
如果只有F$以外的数字,则您可以执行以下操作:

select col1 
from tabl1  
where instr(col1,'F')=0

假设你只需要数字部分。。。 您可以创建一个函数,该函数将使用TO_NUMBER函数计算行值。 如果文本无效,oracle将抛出ORA-01722:无效数字异常
在函数中处理它,然后您可以在选择查询中使用该函数。

假设您只需要数字部分。。。 您可以创建一个函数,该函数将使用TO_NUMBER函数计算行值。 如果文本无效,oracle将抛出ORA-01722:无效数字异常
在函数中处理它,然后您可以在选择查询中使用该函数。

如果您使用的是诸如Perl之类的脚本语言,其中$%被扩展为可能的内容,则需要转义$

例如,同样在Perl中,以下操作不起作用:

$select_statment = "select ... from ...where the Column not like '%F$%'";
但这将:

$select_statment = "select ... from ...where the Column not like '%F\$%'";

如果您使用的是诸如Perl之类的脚本语言,其中$%被扩展为可能的内容,则需要转义$

例如,同样在Perl中,以下操作不起作用:

$select_statment = "select ... from ...where the Column not like '%F$%'";
但这将:

$select_statment = "select ... from ...where the Column not like '%F\$%'";

使用类似regexp_的方法可以直接在where查询中包含正则表达式

假设您只希望由数字组成的记录只用于

select col1 from tab1
  where regexp_like(col1, '^[[:digit:]]*$');
如果你想匹配F+一些不是数字的东西,你可以使用

select col1 from tab1
  where not regexp_like(col1, 'F[^[:digit:]]');

使用类似regexp_的方法可以直接在where查询中包含正则表达式

假设您只希望由数字组成的记录只用于

select col1 from tab1
  where regexp_like(col1, '^[[:digit:]]*$');
如果你想匹配F+一些不是数字的东西,你可以使用

select col1 from tab1
  where not regexp_like(col1, 'F[^[:digit:]]');

是否可以使用正则表达式。F后面只有数字吗?F后面可以有任何数字。请解释为什么不能在WHERE子句中使用字符“$”?如果您想返回值F*1234而不是值F$1234,那么在WHERE子句中不使用$似乎很奇怪。@贾斯汀:我猜OP使用的是脚本语言Perl。。。要创建select语句,在Perl中,$将扩展为某物。是否可以使用正则表达式。F后面只有数字吗?F后面可以有任何数字。请解释为什么不能在WHERE子句中使用字符“$”?如果您想返回值F*1234而不是值F$1234,那么在WHERE子句中不使用$似乎很奇怪。@贾斯汀:我猜OP使用的是脚本语言Perl。。。要创建select语句,在Perl中,$将扩展为一些内容。