在内部部分匹配T-SQL查询的顶部进行精确匹配显示

Mac*_*ver 2 sql t-sql match sql-server-2008

假设您有一个如下所示的查询:

SELECT * FROM client
WHERE identifyingnumber LIKE '%86%'
Run Code Online (Sandbox Code Playgroud)

有时可能存在完全匹配,这意味着识别号码为86.使用与查询顶部完全匹配的记录的最佳方法是什么?

Gri*_*fin 7

考虑到完全匹配必须是所有匹配的字符串长度中的最短匹配.

SELECT * 
FROM client
WHERE identifyingnumber LIKE '%86%'
ORDER BY LEN(identifyingnumber)
Run Code Online (Sandbox Code Playgroud)

由于LEN操作,这将是一个CPU高的查询.您可以考虑在客户端表中创建一个用于识别号码长度的列 - 可能作为计算列 - 以在select上保存一些CPU.

至于什么是最好的 - 这取决于你的系统.Paolo提供的UNION选项也是我想到的第一件事,除了需要处理两个不同的参数值,假设你参数化你的查询(我一如既往).