如何在SQL Server中精确匹配字符串中的子字符串?

yebdmbv4  于 2023-01-12  发布在  SQL Server
关注(0)|答案(1)|浏览(231)

我的表中有一列workId,其值如下:
x1米1米1x,x1米2米1x
现在,一个用户想要获取这个特定的id G2/2018/2345。我在查询中使用like运算符,如下所示:
select * from u_table as s where s.workId like '%2345%'.
它给了我上面提到的两个工作ID。我尝试了以下查询:
select * from u_table as s where s.workId like '%2345%' and s.workId not like '_2345'
这个查询也给我同样的结果。
如果有人请提供我正确的查询。谢谢!

ddrv8njm

ddrv8njm1#

为什么不使用现有的分隔符来匹配您的条件?

select * 
from u_table 
where concat('/', workId, '/') like concat('%/', '2345', '/%');

当然,理想情况下,您的3个独立的值将是3个独立的列;在单个列中界定多个值违反了第一范式,并且阻止优化器执行有效的索引查找,从而强制每次扫描所有行,损害了性能和并发性。

相关问题