替换 FoxPro 查询中的子字符串
Replace substring in FoxPro query
我一直试图在网上找到一些有关 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')
但只是 returns 无法识别的关键字
update cname where cn_cat = "Q" set cn_desc = strtran(cn_desc, "lw", "lightweight", 1, 1, 1)
后三个参数表示替换第一次出现的"lw",只替换一次出现的"lw",不区分大小写。
请注意,如果扩展值超过 40 个字符的字段长度,我知道 cn_desc 是 ;),那么它将被截断。
如果你知道如何在 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' :
而不是 'where'
REPLACE cname.cn_desc WITH STRTRAN(cname.cn_desc, 'lw', 'lightweight') for (cname.cn_cat='Q')
IOW 你的两次尝试都非常接近。
我一直试图在网上找到一些有关 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')
但只是 returns 无法识别的关键字
update cname where cn_cat = "Q" set cn_desc = strtran(cn_desc, "lw", "lightweight", 1, 1, 1)
后三个参数表示替换第一次出现的"lw",只替换一次出现的"lw",不区分大小写。
请注意,如果扩展值超过 40 个字符的字段长度,我知道 cn_desc 是 ;),那么它将被截断。
如果你知道如何在 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' :
而不是 'where'REPLACE cname.cn_desc WITH STRTRAN(cname.cn_desc, 'lw', 'lightweight') for (cname.cn_cat='Q')
IOW 你的两次尝试都非常接近。