Sql 基于两个表之间的通配符搜索更改字段中的值

Sql 基于两个表之间的通配符搜索更改字段中的值,sql,windows-7,visual-foxpro,Sql,Windows 7,Visual Foxpro,我想将表e:\ctw中所选的字段设置为true,用于与d:\le表中的name2不同的所有字段name。“ctw.name”记录的字符数等于或大于le.name2记录的字符数,因此我希望实现通配符搜索;比如说, le.name2=abc ctw.name=abc\12a 所以,我想使用通配符搜索,比如“abc%”,但不需要硬编码记录值。也就是说,我想知道是否可以将字段名与通配符搜索结合起来,如下所示: UPDATE ctw SET chosen = .t. WHERE LOWER(name) N

我想将表e:\ctw中所选的
字段设置为
true
,用于与d:\le表中的
name2
不同的所有字段
name
。“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)+'%')
我得到一个
函数名丢失)
命令输入错误。

尝试如下:

SET ANSI OFF    
UPDATE ctw ;
   SET chosen = .t. 
   WHERE LOWER(name) NOT IN (select LOWER(name2) from le)
试着这样做:

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

也许这就是你的意思:

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实现,也不会将ANSI实现与LIKE一起使用。

可能这就是您的意思:

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实现,而是将ANSI实现与LIKE一起使用。

Hi Tamar,我不确定,但OP希望将以le.name2开头的设置为.t.?Hi Tamar,我不确定,但OP希望将以le.name2开头的设置为.t。?