sql-server-2008 - 使用 SQL Server Join 拆分值并与表进行比较
问题描述
我有两个名为Components
and的表PDF_MSDS
。该Component
表包含列f_chem_name
,f_component_id
并且f_chem_name
它包含以下示例数据。
组件表
SELECT F_Cas_Number, F_Component_Id, F_Chem_Name
FROM Components
WHERE F_Chem_Name = 'CHMNM_17816'
输出
F_Cas_Number F_Component_Id F_Chem_Name
-------------------------------------------
CAS_5861 PRD1000826 CHMNM_17816
PDF_MSDS
表格样本数据
F_PRODUCT F_CAS_NUMBERS F_COMPONENT_IDS
----------------------------------------------------------------------
360 CAS_5779¿CAS_5861¿CAS_2614¿ 3E000685¿3E002268¿3E004960¿3E005217¿PRD1000826¿
现在我想通过比较 表中的和表中给定的表中的表来显示表中的f_product
值。PDF_MSDS
F_Cas_Number
F_Component_Id
Components
F_CAS_NUMBERS
F_COMPONENT_IDS
PDF_MSDS
f_chem_name
Components
但是我无法直接使用 join with F_Cas_Number
in Components
table 和F_CAS_NUMBERS
in PDF_MSDS
table 以及F_Component_Id
in Components
table with F_COMPONENT_IDS
in进行比较,PDF_MSDS
因为多个cas_numbers
andcomponent_ids
存储在表中的F_CAS_NUMBERS
andF_COMPONENT_IDS
列中PDF_MSDS
。
如何搜索和比较 cas_numbers 和 component_ids 并选择特定记录。请帮助。F_Chem_Name 是程序的输入参数。
解决方案
您可以在 JOIN 条件中使用 LIKE。
JOIN TableB
ON TableA.Column LIKE '%'+TableB.Column+'%'
推荐阅读
- asp.net-core - asp.net core - 轮询其他有界上下文事件发件箱的长时间运行进程
- java - HashMap 和 ReentrantLock 的并发问题
- r - 将省略号参数与其他参数一起使用
- math - 在GL ES中将片段着色器渐变结果从黑色转换为透明
- kendo-ui - 在剑道编辑器中添加自定义字体名称
- python - 如何知道 OSM 检索区域中是否有道路
- java - 如何通过 SNMP 计算平均 CPU 使用率?
- openshift - 带有 hostPath 的 OpenShift 单节点 PersistentVolume 需要特权 pod,如何设置为默认值?
- python - 在列表切片中,为什么这段代码的输出是一个空列表?前任。打印(输入列表[0:4:-1])
- rabbitmq - 将消息重新发布到 RabbitMQ 队列会创建一个无限循环