Requête SQL pour tester si la valeur de chaîne contient des retour chariot
En essayant de trouver la bonne façon de tester si une colonne de type VARCHAR valeur se termine par un retour chariot. Essayé ceci mais ça ne fonctionne pas, la base de données est Oracle 11g...
select name from myTable where name LIKE'%\r'OR name like'%\n'
Pour trouver une valeur qui contient des caractères non-imprimables tels que transport de retour ou de tabulation verticale ou en fin de ligne, vous pouvez utiliser regexp_like fonction. Dans votre cas, pour afficher les lignes où une chaîne de valeur d'une colonne contient un retour chariot à la fin de la requête similaire peut être utilisé.
select*from your_table_name
where regexp_like(trim(string_column),'[[:space:]]$')
Trim fonction, par défaut, supprime attaque et de fuite des espaces et il ne sera pas supprimer retour chariot ou la fin de la ligne caractères. Permet de réaliser un test simple:
SQL>createtable Test_Table(2 id number,3 col1 varchar2(101)4);Table created
SQL>insertinto Test_Table (id, col1)2values(1,'Simple string');1row inserted
SQL>commit;Commit complete
SQL>insertinto Test_Table (id, col1)2values(1,'Simple string with carriage return at the end'|| chr(13));1row inserted
SQL>commit;Commit complete
SQL>insertinto Test_Table (id, col1)2values(1,' Simple string with carriage return at the end leading and trailing spaces'|| chr(13)||' ');1row inserted
SQL>commit;Commit complete
SQL>insertinto Test_Table (id, col1)2values(1,' Simple string leading and trailing spaces ');1row inserted
SQL>commit;Commit complete
SQL>select*2from test_table;
ID COL1
--------------------------------------------------------------------------------1 Simple string
1 Simple string with carriage return at the end1 Simple string with carriage return at the end leading and trailing spaces
1 Simple string leading and trailing spaces
SQL>
SQL>select*2from test_table
3where regexp_like(trim(col1),'[[:space:]]$')4;
ID COL1
----------------------------------------------------------------------------------1 Simple string with carriage return at the end1 Simple string with carriage return at the end leading and trailing spaces
SQL>
Quelle partie de [[:space:]]$ est en fait la vérification pour le transport de retour? Est-il $ ? [[:space:]] - à la recherche pour un retour chariot(et d'autres caractères non-imprimables mentionné dans la réponse). $ - recherche pour les matches à la fin de la chaîne. J'ai essayé, mais c'est de ramasser des colonnes avec des espaces à la fin, certainement sauter sur ceux avec des retours chariot... BTW, +1 pour SQLFiddle! la garniture de la valeur de la colonne comme trim(col_name) En fait, c'est de travailler, nous avons trouvé d'autres instances de données, où c'est la règle, où nous attend. Thx
SELECT name from myTable where name like'%'||chr(10)or name like'%'||chr(13)
Les bons numéros à utiliser dépend du caractère de base de données de [var]char[2] types de données et base de données nationale de jeu de caractères pour le n[var]char[2] types. (A commenté sur tout hasard quelqu'un à l'aide de EBCDIC traverse cette réponse.)
Pour trouver une valeur qui contient des caractères non-imprimables tels que transport de retour ou de tabulation verticale ou en fin de ligne, vous pouvez utiliser regexp_like fonction. Dans votre cas, pour afficher les lignes où une chaîne de valeur d'une colonne contient un retour chariot à la fin de la requête similaire peut être utilisé.
Démo
Réponse aux commentaires
Trim
fonction, par défaut, supprime attaque et de fuite des espaces et il ne sera pas supprimer retour chariot ou la fin de la ligne caractères. Permet de réaliser un test simple:[[:space:]]$
est en fait la vérification pour le transport de retour? Est-il$
?[[:space:]]
- à la recherche pour un retour chariot(et d'autres caractères non-imprimables mentionné dans la réponse).$
- recherche pour les matches à la fin de la chaîne.J'ai essayé, mais c'est de ramasser des colonnes avec des espaces à la fin, certainement sauter sur ceux avec des retours chariot... BTW, +1 pour SQLFiddle!
la garniture de la valeur de la colonne comme
trim(col_name)
En fait, c'est de travailler, nous avons trouvé d'autres instances de données, où c'est la règle, où nous attend. Thx
OriginalL'auteur Nick Krasnov
Essayer
OriginalL'auteur A.B.Cade