以下查询在 Oracle 中运行良好,但在 SQL SERVER 中运行良好。我知道“ANY”,SQL SERVER 中的关键字是为其他目的而开发的,但我想知道 SQL SERVER FOR 中是否有类似的关键字在下面的查询中 fisrtname、lastname、middlename 是 Person 表中的列
SELECT * FROM Person WHERE 'Somename' = ANY(firstname, lastname,middlename)
以下查询在 Oracle 中运行良好,但在 SQL SERVER 中运行良好。我知道“ANY”,SQL SERVER 中的关键字是为其他目的而开发的,但我想知道 SQL SERVER FOR 中是否有类似的关键字在下面的查询中 fisrtname、lastname、middlename 是 Person 表中的列
SELECT * FROM Person WHERE 'Somename' = ANY(firstname, lastname,middlename)
等效的是
SELECT * FROM Person WHERE 'Somename' IN (firstname, lastname, middlename)
你能不能简单地做:
SELECT * FROM Person
WHERE
firstname = 'Somename'
OR lastname = 'Somename'
OR middlename= 'Somename'
还有其他可能性,但在大多数情况下,它们不会让优化器很好地利用索引,例如
SELECT * FROM Person
WHERE
('---' + firstname + '---' + lastname + '---' + middlename + '---')
LIKE '%---Somename---%'
除了写这样的东西之外,我不知道有一种方法可以检查多个列:
SELECT * FROM Person WHERE
firstname = 'Somename'
OR lastname = 'Somename'
OR middlename = 'somename'