Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/31.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在SQL中组合firstname和lastname并使用LIKE进行搜索_C#_Asp.net_Sql - Fatal编程技术网

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

C# 如何在SQL中组合firstname和lastname并使用LIKE进行搜索,c#,asp.net,sql,C#,Asp.net,Sql,我想将FirstName和LastName合并到一个名为'FULL NAME'的列中,并在SQL中使用like进行搜索 例1: 名字:米兰 姓氏:帕特尔 全名:米兰帕特尔 使用以下内容进行搜索:如“%SomeText%” 例2: 标题:“会议:工作的实际替代方案。” 搜索:我想搜索给定字符串中的整个单词。例:作品应返回上述标题 这是我到目前为止所拥有的 SELECT CE.Title, CC.FirstName + ' ' + CC.LastName AS FullName FROM

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

例1:

名字:米兰
姓氏:帕特尔

全名:米兰帕特尔

使用以下内容进行搜索:
如“%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'
开头的名称,我想搜索名称的开头、结尾,以及包含条件的名称。我该怎么办呢。请帮助在WHERE子句中使用两个%符号组合它们。

您可以使用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) 在搜索的字符串的第一个中查找lastname

(2) 在搜索的字符串末尾查找lastname


(3) 若要在字符串中间查找姓氏,请执行此操作“%n%”

您可以使用类似于的方法,并将列值串联在一起,如下所示

WHERE 
  CC.FirstName + ' ' + CC.LastName LIKE 's%'
但它只搜索以“s”开头的名称,我想搜索 名称开始、结束也包含条件。我怎么走 那个请帮忙

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

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

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

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

WHERE CC.FirstName + ' ' + CC.LastName LIKE 'n%'
如果不想使用它,请将查询包装在子查询中,以便可以使用
别名

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%'

不需要
FullName
列。

其中CONCAT(CC.FirstName,,,CC.LastName)如“%n%”

为什么不创建一个将全名放在第一位的计算列。。。。然后,您就一直拥有它,不需要在查询时将它与
+
“这是我迄今为止得到的”-这是做什么的呢?Searck像
'%sometext%'
'sometext%'
是不同的东西什么数据库系统?不同供应商的字符串操作能力差异很大-SQL只是查询语言,而不是产品-因此这并不能告诉我们您使用的是什么系统…好吧,答案和注释之间的区别在哪里?@Dado Jerry,是的,巨大的差异。我真的很想理解,因为我坚信这句话能回答问题。就像Damith的一段代码一样。我的答案只是需要一些理解…这不是一个坏答案,看起来也不像是一个评论。其他答案比这个更糟糕,因为它们会毫无解释地转储代码,甚至根本不回答问题。事实上,这是唯一一个解决问题的答案,如果你能把它再扩展一点,那就好了。三个投反对票的无人机也许能解释为什么它们会相互模仿(如:否决一个新用户的回答,该用户回答了这个问题,但没有留下解释为什么他们否决的评论,即使在评论中已经解释这是一个好的答案)?OP想像这个答案一样搜索
全名
coli。但我不知道如何搜索全名以及标题中匹配的单词。你可以通过编辑答案的单词进行多个或多个搜索。添加了两个或按姓氏搜索
SELECT some_column_name FROM some_table where firstname + ' ' + lastname LIKE 'some_value'