我有一个从最终用户获取输入的查询,并将其分别与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
抱歉,大量的语法失败,但我向你保证它在程序中是正确的。
它是用PHP编写的,查询SQL server2005数据库,并且不区分大小写。
键入一个名字(名字或姓氏)将返回正确的结果,但是首先键入,然后键入空格,最后键入,则返回一个空集。
有什么想法吗?
发布于 2009-04-22 19:45:00
这是因为'full_name‘是文字而不是列名,因此在WHERE子句级别上不存在
您需要添加
OR f_name + ' ' + l_name = user-input
instead of 'full_name‘=用户输入
发布于 2009-04-22 19:54:14
根据“授人以鱼”的理论...
不能在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
发布于 2009-04-22 19:45:53
“full_name”是文字字符串,而不是列...
(f_name +‘’+ l_name) =用户输入
https://stackoverflow.com/questions/778863
复制相似问题