SQL连接字符串?

2 sql sql-server

我有一个查询,它从最终用户获取输入并将其分别与2列进行比较,并将两列连接起来.

SELECT f_name, l_name, (f_name + ' ' + l_name) AS full_name
FROM users_table
WHERE f_name = user-input
   OR l_name = user-input
   OR 'full_name' = user-input
Run Code Online (Sandbox Code Playgroud)

请原谅大量语法失败,但我保证你在程序中是正确的.

它是用PHP编写的,查询SQL SERVER 2005数据库,并且不区分大小写.

键入一个名称(第一个或最后一个)将返回正确的结果,但首先键入,然后键入空格,然后键入最后一个,返回一个空集.

有任何想法吗?

SQL*_*ace 10

这是因为'full_name'是文字而不是列名,它在WHERE子句级别不存在

你需要添加

OR f_name + ' ' + l_name = user-input
Run Code Online (Sandbox Code Playgroud)

而不是OR'full_name'=用户输入


JP *_*oto 5

根据"教人钓鱼"理论......

您不能在where或group by子句中使用列别名.您可以在order by子句中使用它.要按照您希望的方式使用列别名,您必须执行以下操作:

SELECT [Full Name] FROM
  (SELECT f_name, l_name, f_name + ' ' + l_name AS [Full Name]
   FROM users_table)
  WHERE [Full_Name] = @paramVal
Run Code Online (Sandbox Code Playgroud)