Обработать новый символ строки «\ n» в базе данных Sqlite с помощью Python?

У меня есть база данных Sqlite с именем test.db, которая содержит две таблицы с такими структурами:

Таблица 1: ID INTEGER PRIMARY KEY AUTOINCREMENT, Имя varchar (500), Цвет varchar (500)

Таблица 2: ID INTEGER PRIMARY KEY AUTOINCREMENT, Название varchar (500), Запах varchar (500)

Я пытаюсь присоединиться к двум таблицам, используя следующий код

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

Однако я потерпел неудачу, потому что Table1.Name имеет невидимый новый символ строки «\ n», а Table2.Name не работает, поэтому предложение WHERE не работает.

Есть ли способ немного изменить инструкцию SELECT, чтобы Table1.Name = Table2.Name работало? Или мне нужно восстановить таблицу 1, чтобы удалить «\ n», но я не знаю, как это сделать?

  • нужна проверка и добавление базы данных sqlite для ведения домашнего хозяйства и управления кодом
  • Проверка отпечатка пальца в базе данных
  • Хранение длинной строки HTML в базе данных SQLite вызывает неизвестную ошибку
  • Весь JSON в одно поле SQLite с Python
  • Добавление фрейма данных Pandas в таблицу sqlite с помощью первичного ключа
  • Имя переменной в sqlite
  • sqlite3.OperationalError: непризнанный токен: «01T00» Python datestamp
  • Как получить файл _sqlite3.so?
  • 2 Solutions collect form web for “Обработать новый символ строки «\ n» в базе данных Sqlite с помощью Python?”

    Используйте функцию replace() SQL:

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

    Вы можете обновить весь столбец « Name Table чтобы удалить символы новой строки:

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

    Первое, что вам нужно сделать, это исправить ваши таблицы, чтобы данные были правильными для вашего приложения. Похоже, у вас есть данные, такие как Apple\n в столбце name вашей таблицы.

    Запустите этот запрос, чтобы исправить вашу таблицу:

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

    Это приведет к удалению всех \n с правой стороны значения столбца Name в каждой строке, а затем обновит эту строку.

    Редактировать: ответ @ Martijn позволит вашему запросу работать (при условии, что у вас нет той же проблемы с Table2.Name ), но вы действительно должны исправить данные в своих таблицах, чтобы вам не приходилось запоминать эти обходные пути каждый раз.

    Python - лучший язык программирования в мире.