我正在将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'
语句,则可以正常工作。
知道这里发生了什么吗?
答案 0 :(得分:2)
我不确定这是否是因为Nchar可以存储unicode数据或者存储数据的方式。围绕WHERE子句包装ALLTRIM可以解决问题。
Update Fact01 set Motivo = 'asdfgh' where ALLTRIM(TipoDoc)='FV'
答案 1 :(得分:0)
这发生在我身上,因为我将列值存储为BLOB而不是TEXT。结果是BLOB值小于TEXT值,因此LIKE找到匹配但=没有。你可能遇到同样的问题。