2013-05-16 3 views
1

Я пытаюсь запустить запрос для выбора значений из столбца таблицы, который не имеет места в определенной позиции в данных в столбце. т.е. первые две позиции.запрос oracle sql для получения значений столбца без пробела

Select test_col from A where SUBSTR(test_col, 0 ,2) <> ' ' 

До сих пор он возвращал столбцы с пространством в начале двух позиций.

Любое предложение.

Пример:

test_col 
    Quick Brown Fox 
Black Sheep 
    This a test 
Mary had a little lamb 

Так что запрос должен вернуть Black Sheep и Мэри был барашек.

+0

Вам нужно разработать. Не могли бы вы показать некоторые примеры данных и как будет выглядеть результат? –

+0

Хорошо обновить пример. – Nomad

+1

Также полезно настроить [sqlfiddle] (http://sqlfiddle.com/). –

ответ

1

Oracle 10g и более поздних версий:

SELECT test_col FROM a WHERE REGEXP_LIKE(test_col, '^[^ ]{2}.*$'); 

Вот SQL Fiddle

+0

Спасибо, что он дал ошибку неверного реляционного оператора ora-00920 – Nomad

+0

Простите. Должен был протестирован. Дайте мне несколько, и я исправлю это. –

+0

Ошибка. Он работает сейчас. См. Ссылку SQL Fiddle. –

1
select test_col 
    from A 
where SUBSTR(test_col, 1, 1) <> ' ' 
    and SUBSTR(test_col, 2, 1) <> ' '; 

ИЛИ (даже лучше)

select test_col 
    from A 
where INSTR(SUBSTR(test_col, 1, 2), ' ') = 0; 
+0

Спасибо за ваш ответ. – Nomad

1

Первый позиционная индекс строки 1, а не 0 (хотя SUBSTR() treats it as 1) и вы тестируете только один пространства:

select test_col from A where SUBSTR(test_col, 1, 2) <> ' ' 
+0

Я пробовал раньше с индексами (1,2), он возвращает данные, которые имеют пространство в этих двух положениях. – Nomad

+0

Вы проверяете пространство _one_ хотя @Nomad, а не _two_. – Ben

+0

Вы правы, спасибо. Но тот же результат, если я изменяю индексы до 1,3 вместо 1,2 и т. Д. – Nomad

4

Ваш индекс должен начинаться с 1, а не 0, и я предпочитаю Trim и проверяю значение null, проверяя пробел в данных. Попробуйте

Select test_col from A where Trim(SUBSTR(test_col, 1 ,2)) IS NOT NULL 
+0

Спасибо за ваш ответ. – Nomad

Смежные вопросы