sql 查询 不包含 某些字符串 255

写sql语句:某个字段是IP地址,这样的1.1.1.1查询出不在某些C段的IP地址,这些C段地址从另一个表取出,格式1.1.1.我的思路是先把从B表取出C段地址如1.1.... 写sql语句: 某个字段是IP地址,这样的1.1.1.1
查询出不在某些C段的IP地址,这些C段地址从另一个表取出,格式1.1.1.
我的思路是先把从B表取出C段地址如1.1.1.生成1.1.1.1到1.1.1.255,然后将这些生成的IP地址集合跟A表的IP地址minus。
谁能实现?
------------------------
A表
IP字段(都是IP地址)
1.1.1.1
。。。。
255.255.255.255

B表
IP字段(都是C段地址)
1.1.1.
。。。
255.25.2.

查询A表中IP地址不在B表中C段地址的记录
展开
 我来答
嵩山少侠来了

2021-03-31 · TA获得超过2.5万个赞
知道大有可为答主
回答量:1.2万
采纳率:0%
帮助的人:373万
展开全部
sql 查询 不包含 某些字符串
基础的总结和解释(基于SQL Server):

先来个基础的导图,来源于脚本之家:


基础的语句总结和解释:

1.选择前百分之多少的数据:
SELECT TOP 50 PERCENT * FROM Websites;2.常用通配符:通配符 描述
%替代 0个或多个字符
_替代一个字符
[charlist]
字符列中的任何单一字符
[^charlist]

[!charlist]
不在字符列
'%a' //以a结尾的数据
'a%' //以a开头的数据
'%a%' //含有a的数据
‘_a_’ //三位且中间字母是a的
'_a' //两位且结尾字母是a的
'a_' //两位且开头字母是a的

首先说下LIKE命令都涉及到的通配符:
% 替代一个或多个字符
_ 仅替代一个字符
[charlist] 字符列中的任何单一字符
[^charlist]或者[!charlist] 不在字符列中的任何单一字符
其中搭配以上通配符可以让LIKE命令实现多种技巧:
1、LIKE'Mc%' 将搜索以字母 Mc 开头的所有字符串(如 McBadden)。
2、LIKE'%inger' 将搜索以字母 inger 结尾的所有字符串(如 Ringer、Stringer)。
3、LIKE'%en%' 将搜索在任何位置包含字母 en 的所有字符串(如 Bennet、Green、McBadden)。
4、LIKE'_heryl' 将搜索以字母 heryl 结尾的所有六个字母的名称(如 Cheryl、Sheryl)。
5、LIKE'[CK]ars[eo]n' 将搜索下列字符串:Carsen、Karsen、Carson 和 Karson(如 Carson)。
6、LIKE'[M-Z]inger' 将搜索以字符串 inger 结尾、以从 M 到 Z 的任何单个字母开头的所有名称(如 Ringer)。
7、LIKE'M[^c]%' 将搜索以字母 M 开头,并且第二个字母不是 c 的所有名称(如MacFeather)3.别名:在下面的情况下,使用别名很有用:

在查询中涉及超过一个表
在查询中使用了函数
列名称很长或者可读性差
需要把两个列或者多个列结合在一起4.连接:不同的 SQL JOIN
在我们继续讲解实例之前,我们先列出您可以使用的不同的 SQL JOIN 类型:
INNER JOIN:如果表中有至少一个匹配,则返回行
LEFT JOIN:即使右表中没有匹配,也从左表返回所有的行
RIGHT JOIN:即使左表中没有匹配,也从右表返回所有的行
FULL JOIN:只要其中一个表中存在匹配,则返回行
chen_hongyang
2016-05-11 · TA获得超过5447个赞
知道大有可为答主
回答量:2790
采纳率:91%
帮助的人:867万
展开全部
有2个方法实现:
1 内网C类的IP地址是 192.168.0.0到192.168.255.255,外网的C类IP地址是 192.0.0.0到223.255.255.255 按这个判断应该很简单吧。
2 把223.255.255.255转成2进制的号码后再判断

能否描述清楚你的问题,最好截图看看

A表
IP字段(都是IP地址)
1.1.1.1
。。。。
255.255.255.255

B表
IP字段(都是C段地址)
1.1.1.
。。。
255.25.2.

能否具体举例子,看不懂这里为什么是这样的,特别是B表,怎么是1.1.1. 这不是完整的IP地址吧。
追问
说了是C段地址。。。。。。。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
cjuesi
2016-05-11 · TA获得超过963个赞
知道小有建树答主
回答量:540
采纳率:88%
帮助的人:143万
展开全部
--思路把A表IP变成同B表一样再去对比查询
select ip form [A表]
where substring(ltrim(rtrim(ip)),1,(LEN(ltrim(rtrim(ip)))-CHARINDEX('.',REVERSE(ltrim(rtrim(ip)))))+1) not in(
select ltrim(rtrim([C段ip])) from [B表])
追问
我要查的数据出自A表,不是B表。。。。。
追答
不是查询A表中在B表没有对应的数据么,如果是就是上面的语句
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
你眼中有天空
2016-05-11
知道答主
回答量:20
采纳率:0%
帮助的人:2.2万
展开全部
这个能实现吗?我也想知道,在数据库中直接查询应该不能只查一半留一半吧
追问
实现了,把B表的数据整到excel中全部弄成全D段,如1.1.1弄成1.1.1.1一直到1.1.1.255。
把这些所有的D段,写入一个新表(C表)
A minus C就行了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式