13

我想在 SQL 中将和合并FirstNameLastName一个名为'FULL NAME'和搜索的列中。

示例 1:

名字 : 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',我想搜索名称开始,结束,也包含条件。我该怎么办呢。请帮忙

4

6 回答 6

20

您可以使用LIKE连接列值,如下所示

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

但它只搜索以“s”开头的名称,我想搜索名称开始、结束、包含条件。我该怎么办呢。请帮忙

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

WHERE 
  CC.FirstName + ' ' + CC.LastName LIKE '%s%'
于 2013-06-14T09:34:29.057 回答
6

你可以使用 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%'

于 2013-06-14T09:34:16.023 回答
5

您不能使用ALIASonWHERE子句,因为在 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%'
于 2013-06-14T09:35:23.253 回答
3

where CONCAT(CC.FirstName, ' ', CC.LastName) Like "%n%"

于 2016-07-20T02:01:52.180 回答
1
SELECT some_column_name FROM some_table where firstname + ' ' + lastname LIKE 'some_value'

不需要FullName列。

于 2014-11-05T14:40:09.327 回答
1

也将它们组合在 WHERE 子句中,并带有两个 % 符号。

于 2013-06-14T09:33:23.383 回答