替换FoxPro查询

时间:2018-03-08 13:57:00

标签: visual-foxpro foxpro

我一直试图在网上找到一些关于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')

但这只会返回无法识别的关键字

2 个答案:

答案 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')

如果你在两次尝试中都非常接近。