2017-07-27 54 views
0

我有my_own表与列 - PersonID,名,姓,城市,年龄和WorkStatus。在BETWEEN语句中写入WHERE条件,它不会返回任何行,但不会给出任何错误。BETWEEN in SQL

SELECT PersonID,FirstName,LastName,City,age,WorkStatus 
FROM sakila.my_own 
WHERE (FirstName BETWEEN 'Omer' AND 'Amrah') 
AND NOT WorkStatus IN ('Unemployee'); 

为什么这样做?如果任何人有任何答案,请与我分享。 在此先感谢您的答案。

+1

解释给我们简单的英语 - 什么你期望'姓“奥马尔”与“Amrah''之间做做什么? – ayush

+1

可能重复https://stackoverflow.com/questions/5980783/sql-between-clause-with-strings-columns – ffeast

回答

-1

您在使用BETWEEN比较字符串。

所以显然它不会比较它作为数字或日期字段。

还有一件事

AND NOT WorkStatus IN ('Unemployee'); 

取而代之的是你必须把

AND WorkStatus NOT IN ('Unemployee'); 
-1

您查询:

SELECT PersonID,FirstName,LastName,City,age,WorkStatus 
    FROM sakila.my_own 
    WHERE (FirstName BETWEEN 'Omer' AND 'Amrah') 

在语法上是正确的,但不是语义正确。更具体地说,条款:FirstName BETWEEN 'Omer' AND 'Amrah'将始终导致一个空集,因为'Omer' > 'Amrah',字符串明智。尝试:

FirstName BETWEEN 'Amrah' AND 'Omer' 
+0

在downvoters:我真的很感激,如果你能证明downvote的理由。 – apomene

-1

你应该改变BETWEEN条件使用LIKE运营商像

WHERE FirstName LIKE '%Omer%' Or FirstName LIKE '%Amrah%' 
AND WorkStatus <> 'Unemployee';