注册 登录
编程论坛 VFP论坛

字符串如何查询

fdqzy 发布于 2021-11-21 19:34, 2915 次点击
程序代码:
create cursor b1 (jnh n(1),mc c(3))
insert into b1 values (1,"ab")
insert into b1 values (2,"abc")
insert into b1 values (3,"ac")
insert into b1 values (4,"bc")
insert into b1 values (5,"A5")

create cursor b2 (jnh n(1),mc c(2))
insert into b2 values (1,"ab")
insert into b2 values (2,"aba")
insert into b2 values (3,"a")


查两表mc中完全相同的记录。
SELECT * FROM b1 WHERE ALLTRIM(mc) in (SELECT ALLTRIM(mc) FROM b2)
这个查法不行,应如何进行?谢谢!
14 回复
#2
laowan0012021-11-21 20:19
select * from b1,b2 where alltrim(b1.mc)==alltrim(b2.mc)
#3
sdta2021-11-21 20:37
select * from b1 inner join b2 on alltrim(b1.mc)==alltrim(b2.mc)
#4
吹水佬2021-11-21 20:57
回复 楼主 fdqzy
create cursor b2 (jnh n(1),mc c(2))
insert into b2 values (2,"aba")
这个mc数据"aba"会丢失"a"



[此贴子已经被作者于2021-11-21 21:00编辑过]

#5
fdqzy2021-11-21 21:58
以下是引用吹水佬在2021-11-21 20:57:36的发言:

create cursor b2 (jnh n(1),mc c(2))
insert into b2 values (2,"aba")
这个mc数据"aba"会丢失"a"

是我把宽度写错了
#6
fdqzy2021-11-21 21:59
谢谢以上各位了!!!
#7
fdqzy2021-11-22 09:04
两位版主,查询出来是两表连接表,如何只出现一个表?
特别是对查不相同时很重要。
谢谢!

[此贴子已经被作者于2021-11-22 09:13编辑过]

#8
吹水佬2021-11-22 09:29
回复 7楼 fdqzy
选择想要的字段就可以
程序代码:
create cursor b1 (jnh n(1),mc c(3))
insert into b1 values (1,"ab")
insert into b1 values (2,"abc")
insert into b1 values (3,"ac")
insert into b1 values (4,"bc")
insert into b1 values (5,"A5")

create cursor b2 (jnh n(1),mc c(3))
insert into b2 values (1,"ab")
insert into b2 values (2,"aba")
insert into b2 values (3,"a")

select b1.jnh,b1.mc from b1,b2 where b1.mc==b2.mc
#9
laowan0012021-11-22 09:30
查两表全部
select * from b1,b2 where alltrim(b1.mc)==alltrim(b2.mc)

查相同的b1
select b1.* from b1,b2 where alltrim(b1.mc)==alltrim(b2.mc)

查相同的b2
select b2.* from b1,b2 where alltrim(b1.mc)==alltrim(b2.mc)

b1有b2没有
select * from b1 where mc not in (select mc from b2)

b2有b1没有
select * from b2 where mc not in (select mc from b1)
#10
fdqzy2021-11-22 10:07
以下是引用laowan001在2021-11-22 09:30:50的发言:

查两表全部
select * from b1,b2 where alltrim(b1.mc)==alltrim(b2.mc)

查相同的b1
select b1.* from b1,b2 where alltrim(b1.mc)==alltrim(b2.mc)

查相同的b2
select b2.* from b1,b2 where alltrim(b1.mc)==alltrim(b2.mc)

b1有b2没有
select * from b1 where mc not in (select mc from b2)

b2有b1没有
select * from b2 where mc not in (select mc from b1)

多谢!!!
#11
fdqzy2021-12-04 11:03
以下是引用laowan001在2021-11-22 09:30:50的发言:

查相同的b1
select b1.* from b1,b2 where alltrim(b1.mc)==alltrim(b2.mc)

b1有b2没有
select * from b1 where mc not in (select mc from b2)


对于"b1有b2没有",查询没问题,但用删除就有点问题:
我用:
DELETE FROM b1 where mc in (select mc from b2)
删除的不是绝对相同的字符串。应如何写?
#12
吹水佬2021-12-04 13:04
in不了完全相等
#13
fdqzy2021-12-04 15:24
以下是引用吹水佬在2021-12-4 13:04:53的发言:

in不了完全相等

此类情况就不能用删除替代了,是吗?
#14
吹水佬2021-12-04 15:40
回复 13楼 fdqzy
为什么一定要用删除,能不用删除就不用,真删除还要重写文件,效率低还不安全。
#15
fdqzy2021-12-04 17:21
回复 14楼 吹水佬
哦,谢谢!
1