我一直试图在网上找到一些关于FoxPro查询的帮助,但似乎在苦苦挣扎。我发现问题的最接近的是:Find a Specific Character in a Field and Replace it with a Phrase,但这不是我需要的一切。
我有一个FoxPro数据库,我们需要通过替换一个单词来更改某些记录的某些描述。
我知道如何在SQL中执行此操作;
UPDATE cname
SET cname.cn_desc = REPLACE(cname.cn_desc, 'lw', 'lightweight')
WHERE cname.cn_cat = 'Q'
但我不知道如何在VFP中复制它。我试过了
REPLACE cname.cn_desc WITH STRTRAN(cname.cn_desc, 'lw', 'lightweight') WHERE (cname.cn_cat='Q')
但这只会返回无法识别的关键字
答案 0 :(得分:3)
update cname where cn_cat = "Q" set cn_desc = strtran(cn_desc, "lw", "lightweight", 1, 1, 1)
最后三个参数意味着替换第一次出现的" lw",只替换一次" lw",并且不区分大小写。
请注意,如果扩展值超过了40字符长度,我知道cn_desc是;)那么它将截断它。
答案 1 :(得分:0)
如果您知道如何在SQL中执行此操作,那么为什么不简单地使用SQL,除了将函数replace()更改为特定于VFP的内容(记住函数主要针对后端使用它们而不是ANSI SQL的一部分)。
UPDATE cname
SET cname.cn_desc = strtran(cname.cn_desc, 'lw', 'lightweight')
WHERE cname.cn_cat = 'Q'
当您尝试使用xBase命令而不是SQL执行相同操作时,而不是'其中'你需要使用' for' :
REPLACE cname.cn_desc WITH STRTRAN(cname.cn_desc, 'lw', 'lightweight') for (cname.cn_cat='Q')
如果你在两次尝试中都非常接近。