这是不容易的与SQL Server这样做,因为SQL Server不支持正则表达式(调用温和增强“喜欢”“正则表达式”是严重的市场推广)。
假设你的IDS有长度为5,你可以尝试这样的事:
where (id like '%' + substring(id, 1, 1) + substring(id, 1, 1) + '%') or
(id like '%' + substring(id, 2, 1) + substring(id, 2, 1) + '%') or
(id like '%' + substring(id, 3, 1) + substring(id, 3, 1) + '%') or
(id like '%' + substring(id, 4, 1) + substring(id, 4, 1) + '%')
SQL Server不(外的开箱)支持正则表达式。
实际上,replicate()
函数将使逻辑稍微更清晰:
where (id like '%' + replicate(substring(id, 1, 1), 2) + '%') or
(id like '%' + replicate(substring(id, 2, 1), 2) + '%') or
(id like '%' + replicate(substring(id, 3, 1), 2) + '%') or
(id like '%' + replicate(substring(id, 4, 1), 2) + '%')
确定与480k代表我认为这是“的”解决方案......但为什么我的RegEx接近不可能?我认为它应该以某种方式工作 – Toshi
@GodofSource SQL Server只支持最小的正则表达式。你不能使用它的全部功能。基本上像[0-9]这样的东西,使用%作为通配符,使用^作为否定或启动,以及其他一些事情,但是您不打算用其他语言中的正则表达式解决复杂问题。 https://msdn.microsoft.com/en-us/library/ms174214.aspx – scsimon
@GodofSource。 。 。哦,那很简单。 SQL Server不支持正则表达式。 –