Sql 将搜索条件表应用于值以确定结果

Sql 将搜索条件表应用于值以确定结果,sql,sql-server,sql-server-2016,Sql,Sql Server,Sql Server 2016,我们正在SQL Server 2016上运行一个数据库。在这个数据库中,我们有一个存储过程,它定期处理接收到的消息记录并在事务表中创建条目。我们最近添加了一个包含位置代码的额外字段,我需要将其映射到一个内部ID值。位置代码将类似于: A.12.10.3 QUAY HD.STACK CDC.MT MT.STACK 我想创建一个规则表来评估接收到的代码并将它们映射到ID。很多位置代码的格式都很相似,所以我想这样: CREATE TABLE LOCATION_MAP ( CRITERIA NVA

我们正在SQL Server 2016上运行一个数据库。在这个数据库中,我们有一个存储过程,它定期处理接收到的消息记录并在事务表中创建条目。我们最近添加了一个包含位置代码的额外字段,我需要将其映射到一个内部ID值。位置代码将类似于:

A.12.10.3
QUAY
HD.STACK
CDC.MT
MT.STACK
我想创建一个规则表来评估接收到的代码并将它们映射到ID。很多位置代码的格式都很相似,所以我想这样:

CREATE TABLE LOCATION_MAP (
  CRITERIA NVARCHAR(50) NOT NULL,
  LOCATIONID INT NOT NULL,
  CONSTRAINT PK_LOCATION_MAP PRIMARY KEY (CRITERIA, LOCATIONID)
);
然后,表中的值如下所示:

CRITERIA   LOCATIONID
A.%        1
CDC.%      2
QUAY       3
HD.%       4
(我使用%符号的方式与SQL Server在类似条件下使用它的方式相同)


将搜索条件应用于字段值的最佳方式是什么?

随着时间的推移,您希望表中有多少个值?聪明的快捷方式可能会减少表中记录的数量,但如果语义发生变化,则无法返回完整的列表。如果条目的数量是可管理的,那么只需将所有条目填充到一个表中即可。我正试图通过保持位置代码的标准格式来限制该表(因此一个位置的所有内容都是CDC。例如)。我实际上已经解决了这一问题。。。从(@LOCATIONCODE-LIKE-CRITERIA)工作的位置图中选择*。早该想到这一点!