名字,中间名和姓氏MS SQL

时间:2013-10-09 09:08:33

标签: sql sql-server-2008

我想对first,middle和lastname进行组合搜索。查询是:

SELECT  picture,person_id,   firstname+ ' ' +middlename+ ' ' +lastname AS fullName
FROM    PERSON
WHERE   (firstname+ ' ' +middlename+ ' ' +lastname LIKE"%#queryString#%")

现在这适用于:Peter den Test(第一/中/后) 这不适用于:Marc Baker(第一个/没有中间名/最后一个)。在Marc Baker出现之前我必须输入两个空格。我可以检查查询中的中间名是否为空?

谢谢!

3 个答案:

答案 0 :(得分:1)

我认为这样可行:

WHERE   (firstname+ ' ' +LTRIM(middlename+ ' ' +lastname) LIKE"%#queryString#%")

答案 1 :(得分:1)

是的,您可以使用CASE进行检查,例如:

SELECT  picture,person_id,   firstname+ ' ' +middlename+ ' ' +lastname AS fullName
FROM    PERSON
WHERE   (firstname
          + CASE WHEN middlename = '' OR middlename IS NULL THEN '' ELSE ' ' +middlename END 
          + ' ' +lastname LIKE"%#queryString#%")

答案 2 :(得分:0)

尝试这样:

SELECT  picture,person_id,   firstname+ ' ' +middlename+ ' ' +lastname AS fullName
FROM    PERSON
WHERE   (firstname+ ' ' + LTRIM(middlename + ' ') + lastname LIKE"%#queryString#%")