根据两个表之间的通配符搜索更改字段中的值

时间:2016-02-19 19:51:15

标签: sql windows-7 visual-foxpro

我想在表 e:\ ctw 中将chosen字段设置为true,以查找与name不同的所有字段name2的记录在 d:\ le 表中。 ' ctw.name'记录具有与le.name2记录相同或更多的字符,因此我想实现外卡搜索;例如,

le.name2 = abc,

ctw.name = abc \ 12a

所以,我想使用像#abc%'这样的通配符搜索,但没有硬编码记录值。也就是说,我想知道是否可以将字段名称与通配符搜索组合如下:

UPDATE ctw SET chosen = .t. WHERE LOWER(name) NOT LIKE ((select LOWER(name2) from le)+'%')

命令输入时出现function name is missing )错误。

2 个答案:

答案 0 :(得分:1)

试试这样:

SET ANSI OFF    
UPDATE ctw ;
   SET chosen = .t. 
   WHERE LOWER(name) NOT IN (select LOWER(name2) from le)

答案 1 :(得分:1)

可能这就是你的意思:

UPDATE ctw SET chosen = .t. ;
from le ;
where LOWER(name) LIKE lower(trim(le.Name2))+'%'

因为,默认情况下,SQL中的VFP比较不是ANSI,这意味着相同:

UPDATE ctw SET chosen = .t. ;
from le ;
where LOWER(name) = lower(trim(le.Name2))

但是我不相信非ANSI实现并且使用LIKE的ANSI实现。