¿Tratar con el nuevo carácter de línea “\ n” en la base de datos de Sqlite usando Python?

Tengo una base de datos de Sqlite llamada test.db, que contiene dos tablas con estructuras como esta:

Tabla 1: ID INTEGER CLAVE PRIMARIA AUTOINCREMENTO, Nombre varchar (500), Color varchar (500)

Tabla 2: ID INTEGER CLAVE PRIMARIA AUTOINCREMENTO, Nombre varchar (500), Olor varchar (500)

Estoy tratando de unir dos tablas usando el siguiente código

con = sqlite3.connect('test.db') with con: cur = con.cursor() cur.execute("SELECT Color, Smell FROM Table1, Table2 WHERE Table1.Name = Table2.Name") 

Sin embargo, fallé porque Table1.Name tiene un nuevo carácter de línea invisible “\ n” insertado, mientras que Table2.Name no, así que la cláusula WHERE no funciona.

¿Hay alguna manera de modificar un poco la instrucción SELECT para que Table1.Name = Table2.Name funcione? ¿O tengo que regenerar Table1 para eliminar “\ n”, pero no sé cómo?

Utilice la función SQL replace() :

 cur.execute("SELECT Color, Smell FROM Table1, Table2 " "WHERE replace(Table1.Name, '\n', '') = Table2.Name") 

Puede actualizar toda Table columna Name Table para eliminar los caracteres de nueva línea por completo:

 cur.execute("UPDATE Table1 SET Name = replace(Name, '\n', '') " "WHERE Name like '%\n%'") 

Lo primero que debe hacer es arreglar sus tablas para que los datos sean correctos para su aplicación. Parece que tiene datos como Apple\n en la columna de name su tabla.

Ejecute esta consulta para arreglar su tabla:

 UPDATE Table1 SET Name = rtrim(Name,'\n') 

Eso eliminará todos los \n del lado derecho del valor de la columna Name en cada fila y luego actualizará esa fila.

Edición: la respuesta de Table2.Name permitirá que su consulta funcione (suponiendo que no tenga el mismo problema con Table2.Name ), pero realmente debería corregir los datos en sus tablas para no tener que acordarse de hacer estas soluciones. cada vez.