2013-07-03 6 views
0

Я узнал, что я могу найти несколько полей, используя что-то вроде:поиска TSQL для нескольких условий

DECLARE @srch nvarchar(40) 
    SET @srch = '%something%' 

SELECT * FROM DataTable dt 
    WHERE CONCAT(dt.field1, dt.field2) LIKE @srch 

Но есть способ для поиска других, чем с несколько ОШЕМ нескольких критериев?

DECLARE @srch1 nvarchar(40), @srch2 nvarchar(40), @srch3 nvarchar(40), 
    SET @srch1 = '%this%' 
    SET @srch2 = '%that%' 
    SET @srch3 = '%the other%' 

SELECT * FROM DataTable dt 
    WHERE CONCAT(dt.field1, dt.field2) LIKE @srch1 
     OR CONCAT(dt.field1, dt.field2) LIKE @srch2 
     OR CONCAT(dt.field1, dt.field2) LIKE @srch3 

Спасибо!

+0

это не Tsql –

+3

@ t-clausen.dk - 'CONCAT' была введена в SQL Server 2012 –

+2

FTS является одним из вариантов http://msdn.microsoft.com/en-us/library/ms142571. aspx –

ответ

1

Как насчет этого?

DECLARE @srch TABLE (srch_field nvarchar(40)) 

INSERT INTO @srch VALUES ('%this%'), ('%that%') ,('%the other%') 

SELECT * FROM DataTable dt 
WHERE EXISTS (
    SELECT NULL FROM @srch s WHERE CONCAT(dt.field1, dt.field2) LIKE srch_field 
) 
+0

Спасибо, это сработало, хотя это показалось немного медленным. Это, или это только этот компьютер, что я получил вторую руку от Фреда Флинтстоуна? –

Смежные вопросы