我有一个产品表。该表中的每一行对应一个产品,并由唯一的 ID 标识。现在,每个产品都可以有多个与该产品关联的“代码”。例如:
Id | Code
----------------------
0001 | IN,ON,ME,OH
0002 | ON,VI,AC,ZO
0003 | QA,PS,OO,ME
我想做的是创建一个存储过程,以便我可以传入“ON,ME”之类的代码,并让它返回包含“ON”或“ME”代码的每个产品。由于代码是用逗号分隔的,我不知道如何拆分它们并搜索它们。仅使用 TSQL 可以吗?
编辑:这是一个关键任务表。我没有权力改变它。
您应该将代码存储在单独的表中,因为您具有多对多关系。如果将它们分开,那么您将很容易检查。
在您现在拥有的系统类型中可以做到这一点,但需要对列进行文本搜索,每行进行多次搜索才能工作,随着数据的增长,这将产生巨大的性能问题。
如果您尝试沿着当前路径走下去:
您必须分解输入字符串,因为无法保证每个记录上的代码与输入参数的顺序相同(或连续)。那么你必须做一个
Code LIKE '%IN%'
AND Code Like '%QA%'
对您要检查的每个代码使用附加语句进行查询。效率很低。
下面的 UDF 想法也是一个好主意。但是,根据数据的大小以及查询和更新的频率,您也可能会遇到问题。
是否可以创建一个额外的表,该表已规范化并按计划(或基于触发器)同步,供您查询?
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)