2017-02-03 66 views
-3

当我查询:SQL选择列从表其中name =“2的声明,更字”

select * from table_name where name='jim' 

一切都很好。

但是,当我查询:

select * from table where ='a statement with 2 and more word' 

例如下面的查询:

select columns from table where ='jim carrey' 

查询只考虑 '吉姆'。换句话说,查询只考虑第一个单词,并不考虑后面的任何内容。

+3

第二个和第三个查询没有意义 - 你的意思是'name = ...'? – Hogan

+1

你如何说*查询只是考虑'吉姆'*? –

+1

我删除了不兼容的数据库标签。为了清楚起见,请提供样本数据和所需结果。 –

回答

1

SQL不能像那样工作。如果你采取以下三个查询:

select * from users where name = 'Frank Jones' 
select * from users where name = 'Frank' 
select * from users where name like 'Frank%' 

如果我在我的SQL Server数据库运行这些(变回我们的实际数据结构之后)我会得到1级响应第一,人谁是真正的名为“弗兰克·琼斯,我不会得到‘弗兰克·琼斯III’

由于第一和最后的名字都在名字列,如果我运行第二个查询,我会得到任何结果。

如果我跑第三查询我会得到每个人的名字,如果弗兰克,但不会得到“杰森弗兰克斯”,因为我只在我正在寻找的短语结尾处有一个通配符。如果我想大家谁曾和Frank的部分在他们的名字,我会写这个查询:

select * from users where name like '%Frank%' 

这些都是什么不同where子句意味着适用于每一个我所见过的数据库(虽然会有一些标准规则具有不同的通配符符号)。

0

你不说你正在使用哪个平台,这使得你的问题更难回答,但我会给出一个接近答案。

您需要解析字符串中的第一个工作。所以

SELECT aColumn 
FROM aTable 
WHERE name = LEFT('Jim Carrey', CHARINDEX('Jim Carrey',' ')) 

将在SQL Server

的每个平台的这些功能的名称更改为一个例子。

+0

SQL服务器,,但你的查询是行不通的。 – AreF

+0

@AreF怎么不起作用????????????????????????????????????????????????????????????????? ????? – Hogan