如何在SQL中组合firstname和lastname并使用LIKE进行搜索

时间:2013-06-14 09:31:38

标签: c# asp.net sql

我想将FirstNameLastName合并到一个名为'FULL NAME'的列中,并在SQL中使用LIKE进行搜索。

示例1:

  

名字:米兰   姓氏:Patel

     

FullName:Milan Patel

搜索:Like '%SomeText%'

示例2:

  

标题:“会议:工作的实用替代方案。”

搜索:我想在给定字符串中搜索整个单词。例如:工作应该返回上述标题。

这是我到目前为止所拥有的。

SELECT 
    CE.Title, CC.FirstName + ' ' + CC.LastName AS FullName
FROM 
    EntryTable CE
JOIN 
    UserTable CC ON CE.EntryId = CC.USerId
WHERE 
    CC.FirstName LIKE 'n%'

修改

我慢慢地在那里。搜索工作正常。

    SELECT 
     CE.Title 
    FROM 
     EntryTable CE
    JOIN 
     UserTable CC
    ON 
     CE.EntryId = CC.USerId
    WHERE 
     CC.FirstName  + ' ' + CC.LastName LIKE 's%'

但它只搜索以's'开头的名称,我想搜索名称的开头,结尾,包含条件。我怎么能这样做呢。请帮忙

6 个答案:

答案 0 :(得分:16)

您可以将LIKE与连续列值一起使用,如下所示

WHERE 
  CC.FirstName + ' ' + CC.LastName LIKE 's%'
  

但它只搜索以's'开头的名字,我想搜索   名称起始,结束,包含条件。我该怎么办?   那。请帮忙

然后你必须在搜索字符串之前和之后使用%,如下所示

WHERE 
  CC.FirstName + ' ' + CC.LastName LIKE '%s%'

答案 1 :(得分:5)

你可以使用concat

   SELECT CE.Title, concat(CC.FirstName , ' ' , CC.LastName) AS FullName
   FROM EntryTable CE
  JOIN UserTable CC
  ON CE.EntryId = CC.USerId
  WHERE 
  concat(CC.FirstName , ' ' , CC.LastName) LIKE 'n%'
  OR  CC.FirstName LIKE 'n%' OR  CC.FirstName LIKE '%n'
  OR  CC.LastName LIKE 'n%'  OR CC.LastName LIKE '%n'
                        ^^--// (1).   ^^--// (2) 

(1)在你搜索的第一个字符串中查找姓氏。

(2)在你搜索的字符串的末尾找到姓氏。

(3)在字符串中间找到姓氏'%n%'

答案 2 :(得分:5)

您不能在ALIAS子句上使用WHERE,因为在SQL操作顺序中,WHERE子句在SELECT子句之前执行。

更好地使用完整的连接是WHERE子句

WHERE CC.FirstName + ' ' + CC.LastName LIKE 'n%'

如果您不想使用它,请将查询包装在子查询中,以便您可以使用ALIAS

SELECT *
FROM
(
   SELECT CE.Title, CC.FirstName + ' ' + CC.LastName AS FullName
   FROM   EntryTable CE JOIN UserTable CC
          ON CE.EntryId = CC.USerId
) sub
WHERE sub.FullName LIKE 'n%'

答案 3 :(得分:1)

SELECT some_column_name FROM some_table where firstname + ' ' + lastname LIKE 'some_value'

不需要FullName列。

答案 4 :(得分:1)

其中CONCAT(CC.FirstName,'',CC.LastName)喜欢“%n%”

答案 5 :(得分:0)

将它们与WHERE子句结合使用,并带有两个%符号。