SQLite / FoxPro Update无法使用=找到记录,但使用LIKE查找它

时间:2017-04-07 10:33:54

标签: sqlite visual-foxpro

我正在将FoxPro数据库转换为SQLite,并将指令迁移到更新,我发现了一个问题。

如果在FoxPro内我使用Update Fact01 set Motivo = 'asdfgh' where TipoDoc='FV' 行不会更新。

但是,如果我使用Update Fact01 set Motivo = 'asdfgh' where TipoDoc Like 'FV',则会更改行。

如果我在SQLite引擎中执行第一条指令,行也会更改。 TipoDoc的字段类型是NChar(2)。

另外,如果我在Foxpro中执行select * from Fact01 where TipoDoc ='FV'语句,则可以正常工作。

知道这里发生了什么吗?

2 个答案:

答案 0 :(得分:2)

我不确定这是否是因为Nchar可以存储unicode数据或者存储数据的方式。围绕WHERE子句包装ALLTRIM可以解决问题。

Update Fact01 set Motivo = 'asdfgh' where ALLTRIM(TipoDoc)='FV'

答案 1 :(得分:0)

这发生在我身上,因为我将列值存储为BLOB而不是TEXT。结果是BLOB值小于TEXT值,因此LIKE找到匹配但=没有。你可能遇到同样的问题。