Oracle SQL-запрос для выбора столбцов только с соответствующим выражением - PullRequest
0 голосов
/ 23 января 2011

Ребята, у меня есть таблица, которая содержит следующие данные

F$2051032568
F$2051032568
22342342343
3242432432432
5745745
45734554

Когда я пишу SQL-запрос выбора Oracle, я хочу получить только те данные, которые не начинаются или не содержат F $

22342342343
3242432432432
5745745
45734554

пожалуйста, дайте мне знать, как это сделать.

На самом деле это довольно сложно, без использования $ в условии where в SQL-запросе , мне нужно получить данные только тех, которые не соответствуют F$

Ответы [ 5 ]

5 голосов
/ 23 января 2011

Попробуйте:

select col1 from tabl1 where col1 not like '%F$%';

Я не уверен, если я понимаю ваше редактирование:

select col1 from tabl1 where col1 not like ('%F' || chr(36) || '%');
1 голос
/ 24 января 2011

Если вы используете язык сценариев, такой как Perl, где $% расширен до чего-то (что может быть ''), вам нужно экранировать $.

Например, снова в Perl,следующее не будет работать:

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

Но это будет:

$select_statment = "select ... from ...where the Column not like '%F\$%'";
0 голосов
/ 24 января 2011

Использование regexp_like позволяет напрямую включать регулярное выражение в запрос where.

Предположим, вы просто хотите, чтобы записи, состоящие только из цифр, использовали

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

Если вы хотите сопоставить F + то, что не является числом, вы можете использовать

select col1 from tab1
  where not regexp_like(col1, 'F[^[:digit:]]');
0 голосов
/ 24 января 2011

При условии, что вам нужна только числовая часть ... Вы можете создать функцию, которая будет оценивать значение строки, используя функцию TO_NUMBER.если его текст неверен, то oracle выдаст ORA-01722: invalid number исключение Обработайте его в функции, и затем вы сможете использовать функцию в запросе выбора.

0 голосов
/ 23 января 2011
select col1 
from tabl1  
where instr(col1,'F$')=0

Если это только цифры, кроме F $, то вы можете просто сделать:

select col1 
from tabl1  
where instr(col1,'F')=0
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...