困惑于2个SQL查询

时间:2016-12-30 15:28:38

标签: sql

我是数据库的初学者,我的问题很小。

这两个查询之间有什么区别?

SELECT * 
FROM Products 
WHERE ProductName LIKE '[C-M]%';

SELECT * 
FROM Products 
WHERE ProductName BETWEEN 'C%' AND 'M%';

3 个答案:

答案 0 :(得分:1)

注意: 您没有提及您使用的DBMS产品,以下信息适用于var urljson = "data_json.php"; var data = null; var jqXHR = $.ajax ({ type: "GET", url: urljson, dataType: 'json', success: successHandler }); function successHandler(result) { data = result; } function update(){ var jqXHR = $.ajax ({ type: "GET", url: urljson, dataType: 'json', success: successHandler }); function successHandler(result) { data = result; } } $(document).ready(function(){ console.log(data) //// null }); document.getElementById('update').addEventListener('click', function() { update(); console.log(data) //// Array [ Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, other 3213… ] });

第一个查询将返回SQL ServerProductsProductName之间的任何字母开头的所有C。此列表包含在内。

M

示例输出:

Select  *
From    Products
Where   ProductName Like '[C-M]%';

秒查询将返回C Charlie Delta Echo Foxtrot Golf Hotel ... Lima M Mike 介于Products之间且以字符串文字ProductName结尾的所有C%。 (注意:M% 使用通配符。它是文字字符串M%)。此列表包含。

M%

示例输出:

Select  *
From    Products
Where   ProductName Between 'C%' And 'M%';

答案 1 :(得分:0)

第一个返回名称以字符串[C-M]开头的产品。

第二个产品的名称按字母顺序在C%M%之间排序。

答案 2 :(得分:0)

SELECT * FROM Products 
where ProductName Like '[C-M]%';

将生成ProductNameCM之间的任何字母开头的所有行,包括Mzzzzzz之类的字母。

select * from Products 
where ProductName between 'C%' And 'M%';

在此查询中,% 是一个通配符。这只是另一个字符文字。因此,此查询将生成行ProductName,当按字母顺序排序时,等于或大于(排序)文字字符串C%且等于或小于(排序之前)M% 会产生Mzzzzzz之类的行。

它会产生行C&(在C%之后排序),但 会产生行C!(排序C% {1}})但它会生成行M!M%之前的排序)

以下脚本(SQL Server)将说明:

declare @t table 
(prodName varchar(10) not null)
insert @t(prodName)values
  ('C(apy'), ('C!ewrrt'), ('C@asdd'), ('C#qww'), 
  ('C%tty'), ('C&asda'),('C+ASD'),('C-ert'),('C=xx'),
  ('E(apy'), ('E!ewrrt'), ('F@asdd'), ('J#qww'), 
  ('G%tty'), ('N&asda'),('W+ASD'),('H-ert'),('J=xx'),
  ('M(apy'), ('M!ewrrt'), ('M@asdd'), ('M#qww'), 
  ('M%tty'), ('M&asda'),('M+ASD'),('M-ert'),('M=xx')

  select * from @t Where prodName like '[C-M]%'
  select * from @t Where prodName between 'C%' and 'M%'
  select * from @t order By prodName