在我的MSSQL表中,我有两个字段,第一个是post_name
(作业位置),另一个是org_name
(组织的名称或位置)。我正在编写一个PHP脚本来浏览这两个字段。我使用Select2 Bootstrap插件,它基本上是一个搜索行,根据用户输入的内容从数据库中提取下拉选项。
用户通常会搜索完整的职位,包括post_name
和org_name
。让我们说“首席销售经理多伦多”,其中前3个单词来自第一个字段,最后一个单词来自第二个字段。当用户开始键入Chief Sales Man时......“他应该能够在多伦多,库比蒂诺或其他任何地方获得这些经理的完整列表。
我用于此的SELECT查询是:
SELECT post_name, org_name
FROM table
WHERE post_name LIKE 'searchTerm%';
只有当我没有开始输入组织名称时,它才会给我所需的职称,然后它会尝试在post_name字段中找到整个句子并给出一个空字符串。
我也尝试过:
SELECT post_name, org_name
FROM table
WHERE post_name LIKE 'searchTerm%' OR org_name LIKE '%searchTerm%';
或者我试图拆分searchTerm并尝试使用searchTerm结尾搜索org_name字段:
SELECT post_name, org_name
FROM table
WHERE post_name LIKE 'searchTerm%'
AND org_name LIKE '%.substr(searchTerm, -6).%';
但最后的那些更可悲。我正在考虑使用CONCAT来统一这两个字段,以便我可以将这两个字段搜索为一个,例如
SELECT CONCAT(post_name, org_name) as full_title
FROM table
WHERE full_title LIKE 'searchTerm%';
但是在MSSQL Server Express 2005中,我收到了一个不存在函数的错误。
有什么方法可以同时在这两个字段中搜索这样一句话吗?
答案 0 :(得分:1)
您的上一个查询将像这样工作
SELECT post_name, org_name
FROM (
SELECT post_name, org_name,
CONCAT(post_name,' ', org_name) as full_title
FROM table
) z
WHERE full_title LIKE 'searchTerm%';
答案 1 :(得分:1)
SQL Server中您想要的查询似乎是:
SELECT post_name, org_name
FROM table
WHERE post_name + org_name LIKE 'searchTerm%';
您可能还希望在列之间包含空格。
尽管如此,您可能希望研究全文搜索功能。它可能是解决您问题的更好方法。