0

次のような構造を持つ 2 つのテーブルを含む、test.db という名前の Sqlite データベースがあります。

Table1: ID INTEGER PRIMARY KEY AUTOINCREMENT、Name varchar(500)、Color varchar(500)

Table2: ID INTEGER PRIMARY KEY AUTOINCREMENT, Name varchar(500), Smell varchar(500)

次のコードを使用して2つのテーブルを結合しようとしています

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 句が機能しないため失敗しました。

Table1.Name = Table2.Name が機能するように SELECT ステートメントを少し変更する方法はありますか? または、Table1 を再生成して「\n」を削除する必要がありますが、方法がわかりません。

4

2 に答える 2

3

replace()SQL 関数を使用します。

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

列全体を更新Table Nameして、改行文字を完全に削除できます。

cur.execute("UPDATE Table1 SET Name = replace(Name, '\n', '') "
            "WHERE Name like '%\n%'")
于 2013-09-22T09:37:24.700 に答える
0

最初に行うべきことは、データがアプリケーションにとって正しいものになるようにテーブルを修正することです。Apple\nテーブルのname列のようなデータがあるようです。

次のクエリを実行して、テーブルを修正します。

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

これにより、各行の列\nの値の右側からすべてが削除され、その行が更新されます。Name

編集: @Martijn の回答により、クエリが機能するようになります ( Table2.Name.

于 2013-09-22T09:38:01.597 に答える