2016-06-20 114 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 TABLINE 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