2009-08-26 13 views
41
consulta

SQL para un retorno de carro en una cadena y la eliminación definitiva retorno de carroconsulta SQL para un retorno de carro en una cadena y en última instancia, la eliminación de retorno de carro

Tengo algunos datos en una tabla y hay algunos retornos de carro en lugares donde no los quiero. Estoy intentando escribir una consulta para obtener todas las cadenas que contienen retornos de carro.

yo probamos este

select * from Parameters 
where Name LIKE '%"\n" %' 

también

select * from Parameters 
where Name LIKE '\r' 

'

Ambos son SQL válida, pero no están regresando a lo que yo estoy buscando. ¿Debo usar el comando Me gusta o un comando diferente? ¿Cómo obtengo el retorno del carro en la consulta?

El retorno de carro tampoco necesariamente está al final de la línea (puede estar en el medio).

+0

¿Esto fue para el servidor sql? –

Respuesta

53

esto va a ser lento, pero si es una cosa de tiempo, intente ...

select * from parameters where name like '%'+char(13)+'%' or name like '%'+char(10)+'%' 

Tenga en cuenta que el operador de concatenación de cadenas SQL ANSI es "||", por lo que puede necesitar ser:

select * from parameters where name like '%' || char(13) || '%' or name like '%' || char(10) || '%' 
+2

Postgresql usa el nombre de la función 'chr' en lugar de' char'. –

+0

¡Muchas gracias! – PeteFoulkes

+0

Nunca he visto '||' usado en una cadena SQL en lugar de 'OR'. ¿Cuándo es eso una preocupación? – mmcrae

0

Omita las comillas dobles de su primera consulta.

... LIKE '%\n%' 
0

Algo como esto parece funcionar para mí:

SELECT * FROM Parameters WHERE Name LIKE '%\n%' 
3

También puede utilizar expresiones regulares:

SELECT * FROM Parameters WHERE Name REGEXP '\n'; 
5

En SQL Server, lo usaría

where charindex(char(13), name)<>0 
49

La cuestión principal era eliminar el CR/LF. El uso de las funciones reemplazar y Char funciona para mí:

Select replace(replace(Name,char(10),''),char(13),'') 

Para PostgreSQL u Oracle SQL, utilice la función CHR lugar:

 replace(replace(Name,CHR(10),''),CHR(13),'') 
0

Esto también funciona

SELECT TRANSLATE(STRING_WITH_NL_CR, CHAR(10) || CHAR(13), ' ') FROM DUAL; 
+1

¿Esta es la sintaxis de Oracle? – HLGEM

1

esto funciona: seleccione * de la tabla donde la columna como '% (pulse enter)%'

Ignore la corchetes y presiona enter para introducir una nueva línea.

Cuestiones relacionadas