2016-06-20 5 views
0

Мне нужно узнать записи с конечными пробелами. Я попытался построить запрос, используя Length(rtrim), однако он не возвращает требуемые записи.Проходящие пробелы plsql

например.

abc " 
abc  " 
abc                " 

Пожалуйста помогите

+0

Возможный дубликат [Oracle - поиск значений с помощью ведущие или конечные пробелы] (http://stackoverflow.com/questions/3223226/oracle-finding-values-with-leading-or-trailing-spaces) –

+0

Вот довольно интересный [совет] (http: //www.dba -oracle.com/t_find_leading_trailing_spaces_text_column.htm) –

ответ

5

Я думаю, что вы на правильном пути. Следующий пример вернет второй и третий текст, но не первый.

SELECT * FROM 
    (SELECT 'abc' AS text FROM DUAL 
    UNION ALL 
    SELECT 'abc  ' AS text FROM DUAL 
    UNION ALL 
    SELECT 'abc      ' AS text FROM DUAL) 
WHERE LENGTH(RTRIM(text)) != LENGTH(text); 

Или за столом YOURTABLE с колонной YOURCOLUMN, содержащий текст с, возможно, завершающие пробелы:

SELECT * FROM 
YOURTABLE 
WHERE LENGTH(RTRIM(YOURCOLUMN)) != LENGTH(YOURCOLUMN); 

Если у вас также есть HORIZONTAL TAB, LINE FEED или CARRIAGE RETURN вы можете использовать функцию TRANSLATE для лечения этих как нормальные пробелы:

SELECT * FROM 
    (SELECT 'abc' AS text FROM DUAL 
    UNION ALL 
    SELECT 'abc' || CHR(09) AS text FROM DUAL 
    UNION ALL 
    SELECT 'abc' || CHR(10) AS text FROM DUAL 
    UNION ALL 
    SELECT 'abc' || CHR(13) AS text FROM DUAL 
    UNION ALL 
    SELECT 'abc   ' AS text FROM DUAL) 
WHERE LENGTH(RTRIM(TRANSLATE(text, CHR(09) || CHR(10) || CHR(13), ' '))) != LENGTH(text); 
+0

Привет, спасибо. Но у меня есть тысячи записей, в которых трейлинг не похож на приведенные выше примеры, о которых я упоминал в своем сообщении. Промежуточные пробелы могут отличаться от записи к записи. Там может быть один, двойной, тройной и так далее. Пожалуйста, помогите – Sujagni

+0

Простите, я не совсем понимаю. Что вы подразумеваете под одиночным, двойным, тройным? И что конечные пробелы могут отличаться от записи к записи? В моем примере один имеет 0, один имеет 7, а другой имеет 24 пробела. Запрос возвращает те с 7 и 24. – User42

+0

Извините за путаницу. В моей таблице есть записи, которые имеют 1,2,3,4, .......... 100 конечных пробелов. и мне нужно найти эти записи. – Sujagni

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