2012-10-03 2 views

Antwort

5

Wert zu finden, die nicht druckbare Zeichen wie Wagenrücklauf enthält oder vertikalen Lasche oder Zeilenende Sie können regexp_like Funktion verwenden. Wenn in Ihrem Fall Zeilen angezeigt werden sollen, in denen ein Zeichenfolgenwert einer bestimmten Spalte am Ende eine Zeilenschaltung enthält, kann die ähnliche Abfrage verwendet werden.

select * 
    from your_table_name 
where regexp_like(trim(string_column), '[[:space:]]$') 

Demo


Antwort auf die Kommentare

Trim Funktion, die standardmäßig löscht führende und nachfolgende Leerzeichen und es wird Wagenrücklauf oder Ende der Zeile nicht löschen Zeichen. Werfen wir einen einfachen Test durchführen:

SQL> create table Test_Table(
    2 id number, 
    3 col1 varchar2(101) 
    4 ); 

Table created 

SQL> insert into Test_Table (id, col1) 
    2 values(1, 'Simple string'); 

1 row inserted 

SQL> commit; 

Commit complete 

SQL> insert into Test_Table (id, col1) 
    2 values(1, 'Simple string with carriage return at the end' || chr(13)); 

1 row inserted 

SQL> commit; 

Commit complete 

SQL> insert into Test_Table (id, col1) 
    2 values(1, ' Simple string with carriage return at the end leading and trailing spaces' || chr(13)||' '); 

1 row inserted 

SQL> commit; 

Commit complete 

SQL> insert into Test_Table (id, col1) 
    2 values(1, ' Simple string leading and trailing spaces '); 

1 row inserted 

SQL> commit; 

Commit complete 

SQL> select * 
    2 from test_table; 

     ID COL1 
-------------------------------------------------------------------------------- 
     1 Simple string 
     1 Simple string with carriage return at the end 
     1 Simple string with carriage return at the end leading and trailing spaces 
     1 Simple string leading and trailing spaces 

SQL> 
SQL> select * 
    2 from test_table 
    3 where regexp_like(trim(col1), '[[:space:]]$') 
    4 ; 

     ID COL1 
---------------------------------------------------------------------------------- 
     1 Simple string with carriage return at the end 
     1 Simple string with carriage return at the end leading and trailing spaces 

SQL> 
+0

Welcher Teil von '[[:: Space:]] $' prüft tatsächlich für den Wagenrücklauf? Ist es "$"? – raffian

+0

'[[: space:]]' - Suche nach Wagenrücklauf (und andere nicht druckbare Zeichen in der Antwort erwähnt). '$' - Suche nach Übereinstimmungen am Ende der Zeichenfolge. –

+0

Ich habe das versucht, aber es nimmt Spalten mit Leerzeichen am Ende, auf jeden Fall überspringt diejenigen mit Wagenrücklauf ... BTW, +1 für SQLFiddle! – raffian

10

Versuchen

SELECT name from myTable where name like '%'||chr(10) or name like '%'||chr(13) 
+1

Die richtigen Zahlen verwenden wird auf dem Datenbank-Zeichensatz abhängig [var] char [2] Typen und Datenbank nationalen Zeichensatz für n [var] char [2] Typen. (Kommentiert auf die off Chance, jemand EBCDIC verwendet läuft über diese Antwort.) –