0

我有一个名为 table1 的 sqlite 表

cur.execute("CREATE TABLE IF NOT EXISTS Table1(ID INTEGER PRIMARY KEY AUTOINCREMENT, URL varchar(500), Title varchar(500))")

URL 有这样的数据:http ://www.site.com/content/ \n

我想剥离最后一个原始字符串 \n,但使用此方法失败

cur.execute("UPDATE Table1 SET URL = rtrim(URL,'\n'), Title = rtrim(Title,'\n')")

结果保持不变(ULR:http ://www.site.com/content/ \n)。似乎 '\n' 被视为换行符而不是原始字符串,我怎么能 rtrim \n 作为原始字符串?(以 \n 结尾的 URL 将被修剪,而以 n 结尾的 URL 将保持不变)

4

1 回答 1

0

该声明:

cur.execute("UPDATE Table1 SET URL=rtrim(URL, '\n'), Title=rtrim(Title, '\n')")

对于 SQLite 来说工作得很好,它确实从字符串末尾删除了换行符。如果这对您不起作用,则您的值末尾没有换行符,或者您没有提交交易。

产生相同结果的替代方案:

  • 您可以将换行符作为参数传递:

    cur.execute('UPDATE Table1 SET URL=rtrim(URL, ?), Title=rtrim(Title, ?)', ('\n', '\n'))
    
  • 用于X'...'指定 BLOB 文字,使用十六进制表示法:

    cur.execute("UPDATE Table1 SET URL=rtrim(URL, X'0A'), Title=rtrim(Title, X'0A')")
    
于 2013-11-14T12:44:15.047 回答