sql - 文本中任意位置带有两个通配符的 SQL
问题描述
有没有办法使用 like 和两个(或更多)单词来创建 where 语句,但它们的顺序与给出的单词不同?
select
i.ITEM_NUMBER as Item,
min(i.ITEM_DESCRIPTION) as Description,
i.ORGANIZATION_CODE as Org,
max(m.MANUFACTURER_NAME) as Manufacturer,
max(m.MANUFACTURERS_PARTNUMBER) as Partnumber
from mis.XXEAM_INVENTORY_REPORT_WITH_LOCATORS_CONSIGNED_MATERIAL_AND_CATEGORIES_TBL i
left outer join
mis.XXEAM_MANUFACTURING_PART_NUMBERS_TBL m on i.ITEM_NUMBER = m.ITEM_NUMBER
where
i.ITEM_DESCRIPTION like '%ALLEN BRADLEY%PLC%'
group by i.ORGANIZATION_CODE, i.ITEM_NUMBER
我想将上面的描述文本搜索为“%ALLEN BRADLEY%PLC%”或“%PLC%ALLEN BRADLEY%”。我想避免使用 OR 语句,因为数据集很大,查询可能需要很长时间。
通配符可以多于两个,我只是以这两个为例。例如,在我看来,我更喜欢获取第一个单词的数据集,然后从该数据集中获取第二个单词。也许唯一的方法是选择进入临时表。
解决方案
您可以为“ALLEN BRADLEY”和“PLC”做两个 LIKE。它应该适用于您想要的:
SELECT
i.ITEM_NUMBER AS Item
,MIN(i.ITEM_DESCRIPTION) AS Description
,i.ORGANIZATION_CODE AS Org
,MAX(m.MANUFACTURER_NAME) AS Manufacturer
,MAX(m.MANUFACTURERS_PARTNUMBER) AS Partnumber
FROM mis.XXEAM_INVENTORY_REPORT_WITH_LOCATORS_CONSIGNED_MATERIAL_AND_CATEGORIES_TBL i
LEFT OUTER JOIN mis.XXEAM_MANUFACTURING_PART_NUMBERS_TBL m
ON i.ITEM_NUMBER = m.ITEM_NUMBER
WHERE i.ITEM_DESCRIPTION LIKE '%ALLEN BRADLEY%'
and i.ITEM_DESCRIPTION LIKE '%PLC%'
GROUP BY i.ORGANIZATION_CODE
,i.ITEM_NUMBER
推荐阅读
- php - 撤回命令未执行
- python - 跟踪递归函数中的 print() 执行次数
- python - 用于提取 Cisco 交换机信息以准备网络迁移的 Python SSH 脚本
- python - Gensim Doc2Vec Exception AttributeError: 'str' object has no attribute 'decode'
- java - Spring boot - 尝试从 mySQL DB 验证用户 - 需要授予权限的文本表示
- php - 从数据库中填充 $contact_name
- python - 如何在 SQLAlchemy 中执行自定义连接
- php - 会话未从 Guzzle Post 发起
- php - 如何在 ubuntu 18.04 中安装和使用 php 7.0.22
- javascript - 防止 < href ="#slider" class="slider-change"> 跳到顶部