Sql 基于两个表之间的通配符搜索更改字段中的值
我想将表e:\ctw中所选的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
字段设置为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。?