2

我有一个附加到 Xojo 项目的 SQLite 数据库。如果它是引号,我需要去掉第一个字符。这是我尝试过的:

  t=Chr(34)+"%"  // this holds the Quote mark and the wild card  
  S="db.SQLExecute UPDATE "+ CurrentTableName + " SET " + Feilder +" = SUBSTRING("+Feilder+", 2, LEN("+Feilder+")) "
  S=S+"WHERE "+Feilder+" LIKE "+t
  db.SQLExecute S

即使没有 WHERE 子句,我也会收到语法错误。CurrentTableName保存表名,Feilder保存正在评估的字段(或列)。

在 SQLite 中,这是我想要做的:

UPDATE Table SET Myfield = SUBSTRING(Myfield, 2, LEN(MyField))
WHERE MyFiled LIKE "%

谢谢,埃里克。

4

2 回答 2

1

是的!解决它。谢谢

我的旧代码有 S="db.SQLExecute UPDATE ... 后来我执行 db.SQLExecure S

正如您从下面看到的那样,一个变化并且......它起作用了。S= 现在以 UPDATE 而不是执行命令开始。

顺便说一句,如果此代码进入数据库字段,则会删除前导引号。只有领先的报价。

  t=Chr(34)+"%"
  S="UPDATE "+ CurrentTableName + " SET " + Feilder +" = SUBSTR("+Feilder+", 2, LENGTH("+Feilder+")) "
  S=S+"WHERE "+Feilder+" LIKE '"+t+"'"

  db.SQLExecute S

感谢凯尔的帮助。

于 2015-09-23T19:34:07.020 回答
0

选择子字符串的函数是 subst(),而不是 substring()。此外,您应该在 "%...('"%') 周围加上单引号。

于 2015-09-23T06:40:02.620 回答