我有一个连接几个表的 SQL 查询,我想对结果集的许多列使用相同的 LIKE 条件过滤记录。例如,我的查询中有列 t1.Name、t1.FullName、t1.Comment、t2.Name、t3.Description 等(t1、t2 和 t3 是连接表名称),我想检查 t1.Name 是否或 t1.FullName 或 t1.Comment 或 t2.Name 或 t3.Description 是 LIKE '%sometext%'。我只是感兴趣什么 SQL 会更快?
WHERE t1.FullName LIKE '%sometext%' OR t1.Comment LIKE '%sometext%' OR
t2.Name LIKE '%sometext%' OR t3.Description LIKE '%sometext%'
或者
WHERE ISNULL(t1.Name,'') + '|' + ISNULL(t1.FullName,'') + '|' + ISNULL(t1.Comment,'') + '|' + ISNULL(t2.Name,'') + '|' + ISNULL(t3.Description,'') LIKE '%sometext%'
或者可能有一些更快的方法?我正在使用 MS SQL Server 2008 R2。
UPD:我已经编辑了我的第二个查询来处理某些字段为 NULL 并且连接可能包含模式但单独的字段不包含的情况。