Server中的谓词和运算符,谓词和运算符

谓词平常有 where和having,check  谓词只计算 TRUE ,FALSE或许UNKNOWN  逻辑表达式  如 AND 和OQashqai

  

SQL 基础知识梳理(六)-  函数、谓词、CASE 表明式

图片 1

 

1.IN 谓词的用法

   谓词和运算符协作使用是大家获取可观数据的最好路径。

目录

  • 函数
  • 谓词
  • CASE 表达式

 

SELECT orderid, empid, orderdate
FROM Sales.Orders
WHERE orderid IN(10248, 10249, 10250);

 

一、函数

  1.函数:输入某一值获得相应输出结果的效用,输入值称为“参数”,输出值称为“重临值”。

 

  2.函数的品种:

  (1)算术函数 - 数值计算

  (2)字符串函数 - 字符串操作

  (3)日期函数 - 日期操作

  (4)转变函数 - 转换数据类型

  (5)聚合函数 - 数据聚合

 

查询再次来到 订单id等于10248也许10249,10250的订单

一、浅谈谓词

  3.算术函数(加、减、乘、除): 、-、*、/

  【备注】数据类型 NUMBEOdysseyIC(全体位数,小数位数)能够钦赐数值的轻重缓急。

图片 2图片 3

CREATE TABLE SampleMath
    (
      m NUMERIC(10, 3) ,
      n INTEGER ,
      p INTEGER
    );

BEGIN TRAN;

INSERT INTO dbo.SampleMath
        ( m, n, p )
VALUES  ( 500, -- m - numeric
          0, -- n - integer
          NULL  -- p - integer
          );
INSERT INTO dbo.SampleMath
        ( m, n, p )
VALUES  ( -180, -- m - numeric
          0, -- n - integer
          NULL  -- p - integer
          );
INSERT INTO dbo.SampleMath
        ( m, n, p )
VALUES  ( NULL, -- m - numeric
          NULL, -- n - integer
          NULL  -- p - integer
          );
INSERT INTO dbo.SampleMath
        ( m, n, p )
VALUES  ( NULL, -- m - numeric
          7, -- n - integer
          3  -- p - integer
          );
INSERT INTO dbo.SampleMath
        ( m, n, p )
VALUES  ( NULL, -- m - numeric
          5, -- n - integer
          2  -- p - integer
          );
INSERT INTO dbo.SampleMath
        ( m, n, p )
VALUES  ( NULL, -- m - numeric
          4, -- n - integer
          NULL  -- p - integer
          );
INSERT INTO dbo.SampleMath
        ( m, n, p )
VALUES  ( 8, -- m - numeric
          NULL, -- n - integer
          3  -- p - integer
          );
INSERT INTO dbo.SampleMath
        ( m, n, p )
VALUES  ( 2.27, -- m - numeric
          1, -- n - integer
          NULL  -- p - integer
          );
INSERT INTO dbo.SampleMath
        ( m, n, p )
VALUES  ( 5.555, -- m - numeric
          2, -- n - integer
          NULL  -- p - integer
          );
INSERT INTO dbo.SampleMath
        ( m, n, p )
VALUES  ( NULL, -- m - numeric
          1, -- n - integer
          NULL  -- p - integer
          );
INSERT INTO dbo.SampleMath
        ( m, n, p )
VALUES  ( 8.76, -- m - numeric
          NULL, -- n - integer
          NULL  -- p - integer
          );

COMMIT;

开首化数据

  (1)ABS - 相对值:不惦记数值的号子,表示一个数到原点距离的数值。

  相对值的乘除方法:0 和正数的相对值就是其本人,负数的相对化值正是去掉符号后的结果。

--语法: ABS(数值)

图片 4

图:第 2 行:-180 的断然值为 180

   

  (2)MOD - 取余、求余

--语法: MOD(被除数,除数)

  【备注】Oracle、DB2、PostgreSQL、MySQL 帮忙该函数,而 SQL Server 不支持该函数,所以那边用“%”代替。

图片 5

 

  (3)ROUND - 四舍五入

   假如钦点四舍五入的位数为 1,那么会对小数点第 2 位举办四舍五入;假使钦命位数为 2,那么就能够对第 3 位张开四舍五入。图片 6

 

2.BETWEEN 谓词的用法

  谓词的概念:四个运算结果为True、False或Unknown的逻辑表明式。它的施用范围有:where子句、Having子句、Check约束、联接查询的衔接条件等。

   4.字符串函数

图片 7图片 8

CREATE TABLE SampleStr
(
    str1 VARCHAR(40),
    str2 VARCHAR(40),
    str3 VARCHAR(40)
)

BEGIN TRAN;
INSERT INTO dbo.SampleStr
        ( str1, str2, str3 )
VALUES  ( 'opx', -- str1 - varchar(40)
          'rt', -- str2 - varchar(40)
          NULL  -- str3 - varchar(40)
          );

INSERT INTO dbo.SampleStr
        ( str1, str2, str3 )
VALUES  ( 'abc', -- str1 - varchar(40)
          'def', -- str2 - varchar(40)
          NULL  -- str3 - varchar(40)
          );

INSERT INTO dbo.SampleStr
        ( str1, str2, str3 )
VALUES  ( 'aaa', -- str1 - varchar(40)
          NULL, -- str2 - varchar(40)
          NULL  -- str3 - varchar(40)
          );

INSERT INTO dbo.SampleStr
        ( str1, str2, str3 )
VALUES  ( 'aaa', -- str1 - varchar(40)
          NULL, -- str2 - varchar(40)
          NULL  -- str3 - varchar(40)
          );

INSERT INTO dbo.SampleStr
        ( str1, str2, str3 )
VALUES  ( NULL, -- str1 - varchar(40)
          'xyz', -- str2 - varchar(40)
          NULL  -- str3 - varchar(40)
          );

INSERT INTO dbo.SampleStr
        ( str1, str2, str3 )
VALUES  ( '@!#$%', -- str1 - varchar(40)
          NULL, -- str2 - varchar(40)
          NULL  -- str3 - varchar(40)
          );

INSERT INTO dbo.SampleStr
        ( str1, str2, str3 )
VALUES  ( 'ABC', -- str1 - varchar(40)
          NULL, -- str2 - varchar(40)
          NULL  -- str3 - varchar(40)
          );

INSERT INTO dbo.SampleStr
        ( str1, str2, str3 )
VALUES  ( 'aBC', -- str1 - varchar(40)
          NULL, -- str2 - varchar(40)
          NULL  -- str3 - varchar(40)
          );

INSERT INTO dbo.SampleStr
        ( str1, str2, str3 )
VALUES  ( 'abc太郎', -- str1 - varchar(40)
          'abc', -- str2 - varchar(40)
          'ABC'  -- str3 - varchar(40)
          );

INSERT INTO dbo.SampleStr
        ( str1, str2, str3 )
VALUES  ( 'abcdefabc', -- str1 - varchar(40)
          'abc', -- str2 - varchar(40)
          'ABC'  -- str3 - varchar(40)
          );

INSERT INTO dbo.SampleStr
        ( str1, str2, str3 )
VALUES  ( 'micmic', -- str1 - varchar(40)
          'i', -- str2 - varchar(40)
          'T'  -- str3 - varchar(40)
          );

COMMIT;

伊始化数据

  (1)拼接:

图片 9

 

  (2)LEN - 字符串长度

--语法: LEN(字符串)

图片 10

 

  (3)LOWE陆风X8 - 小写转变

--语法:LOWER(字符串)

图片 11

 

  (4)REPLACE - 字符串的轮换

--语法:REPLACE(对象字符串, 替换前的字符串, 替换后的字符串)

图片 12

 

  (5)SUBSTEscortING - 字符串的截取

--语法:SUBSTRING(对象字符串,截取的起始位置,截取的字符数)

图片 13

 

  (6)UPPE福睿斯 - 大写转换

--语法:UPPER(字符串)

图片 14

 

SELECT orderid, empid, orderdate
FROM Sales.Orders
WHERE orderid BETWEEN 10300 AND 10310;

示范1,用于实施数据完整性为多少表增多约束:在职工表中,仅允许薪给大于0的职工存款和储蓄在表中。在那之中的谓词是“薪酬大于0”(SQL表明式:薪水>0)。

   5.日期函数

  (1)获取超过天子和岁月:

图片 15

 

  (2)DATEPART - 截取日期成分

图片 16

 

查询包蕴10300——10310限量订单

示例2,用于查询筛选数据的规格:查询职员和工人表须要只回去贩卖部的职员和工人。当中谓词是“部门等于贩卖部”(SQL表达式:部门='发售部')。

  6.转移函数

  (1)CAST - 类型调换

图片 17

 

  (2)COALESCE - 将 NULL 调换为任何值

  效率:再次回到可变参数中侧面开始的首先个不是 NULL 的值(参数是可变的,即能够个数是最最的)。

--语法:COALESCE(数据1, 数据2, 数据3 ...)

图片 18

图片 19

 

3.LIKE谓词的用法

  

二、谓词

  1.谓词:重回值为真值(TRUE/FALSE/UNKNOWN)的函数。

 

SELECT empid, firstname, lastname
FROM HR.Employees
WHERE lastname LIKE N'D%';

  谓词和平运动算符的互动利用:

  2.LIKE - 字符串的局地同样查询

  【备注】= 运算符:字符串完全一致。

图片 20图片 21

CREATE TABLE SampleLike
(
strcool VARCHAR(6) NOT NULL,
PRIMARY KEY(strcool)
)

BEGIN TRAN;
INSERT INTO dbo.SampleLike
        ( strcool )
VALUES  ( 'abcddd'  -- strcool - varchar(6)
          );

INSERT INTO dbo.SampleLike
        ( strcool )
VALUES  ( 'dddabc'  -- strcool - varchar(6)
          );

INSERT INTO dbo.SampleLike
        ( strcool )
VALUES  ( 'abdddc'  -- strcool - varchar(6)
          );

INSERT INTO dbo.SampleLike
        ( strcool )
VALUES  ( 'ddabc'  -- strcool - varchar(6)
          )

INSERT INTO dbo.SampleLike
        ( strcool )
VALUES  ( 'abddc'  -- strcool - varchar(6)
          )

COMMIT;

初阶化数据

  %:0 字符以上的任性字符串。

  _:任意 1 个字符。

图片 22

图:前有个别雷同

图片 23

图:中间一致

图片 24

图:后有的毫发不爽

图片 25

  后面 ddd 是 3 个字符,所以“abc__(2个 _)”不满意条件。

 

留心的是 N  代表  该数额是NCHATiguan 可能NVARCHARubicon 并不是常规的字符数据类型 char或varchar

    1.经过逻辑运算符连接七个谓词(逻辑表明式),如利用AND和O君越。

   3.BETWEEN - 限量查询

图片 26

 

  BETWEEN 会在结果中包蕴临界值(100 和 一千)。借使不想包括临界值可以应用 < 和 >。

图片 27

 

4.运算符

    2.谓词中央银行使相比运算符,如某些属性值大于或低于某内定个值。

  4.IS NULL、IS NOT NULL - 剖断是还是不是为 NULL

  为了选择部分值为 NULL 的列的数量,不能使用 =,只好接纳 IS NULL。

图片 28

 

  取反(不为空的数额),请使用 IS NOT NULL。

图片 29

 

select 5/2  结果为2   5/2.0 却是 2.5 为何呢  

  

  5.IN - OCR-V 的地利用法

图片 30

 

  用 IN 替换上述语句:

图片 31

 

  否定方式 NOT IN:

图片 32

 

   【备注】IN 和 NOT IN 是无计可施取舍 NULL 数据的。

  

图片 33图片 34

  SQL Server中有部分尤为重要字能够代表谓词语义的含义,也足以称作SQL Server中的谓词。

  6.使用子查询作为 IN 谓词的参数

  IN 和 NOT IN 谓词具备其余谓词未有的用法,它的参数能够是子查询。 

图片 35图片 36

-- DDL:创建表
CREATE TABLE TenpoShohin
(tenpo_id  CHAR(4)       NOT NULL,
 tenpo_mei  VARCHAR(200) NOT NULL,
 shohin_id CHAR(4)       NOT NULL,
 suryo     INTEGER       NOT NULL,
 PRIMARY KEY (tenpo_id, shohin_id));

-- DML:插入数据

INSERT INTO TenpoShohin (tenpo_id, tenpo_mei, shohin_id, suryo) VALUES ('000A',    '东京',        '0001',    30);
INSERT INTO TenpoShohin (tenpo_id, tenpo_mei, shohin_id, suryo) VALUES ('000A',    '东京',        '0002',    50);
INSERT INTO TenpoShohin (tenpo_id, tenpo_mei, shohin_id, suryo) VALUES ('000A',    '东京',        '0003',    15);
INSERT INTO TenpoShohin (tenpo_id, tenpo_mei, shohin_id, suryo) VALUES ('000B',    '名古屋',    '0002',    30);
INSERT INTO TenpoShohin (tenpo_id, tenpo_mei, shohin_id, suryo) VALUES ('000B',    '名古屋',    '0003',    120);
INSERT INTO TenpoShohin (tenpo_id, tenpo_mei, shohin_id, suryo) VALUES ('000B',    '名古屋',    '0004',    20);
INSERT INTO TenpoShohin (tenpo_id, tenpo_mei, shohin_id, suryo) VALUES ('000B',    '名古屋',    '0006',    10);
INSERT INTO TenpoShohin (tenpo_id, tenpo_mei, shohin_id, suryo) VALUES ('000B',    '名古屋',    '0007',    40);
INSERT INTO TenpoShohin (tenpo_id, tenpo_mei, shohin_id, suryo) VALUES ('000C',    '大阪',        '0003',    20);
INSERT INTO TenpoShohin (tenpo_id, tenpo_mei, shohin_id, suryo) VALUES ('000C',    '大阪',        '0004',    50);
INSERT INTO TenpoShohin (tenpo_id, tenpo_mei, shohin_id, suryo) VALUES ('000C',    '大阪',        '0006',    90);
INSERT INTO TenpoShohin (tenpo_id, tenpo_mei, shohin_id, suryo) VALUES ('000C',    '大阪',        '0007',    70);
INSERT INTO TenpoShohin (tenpo_id, tenpo_mei, shohin_id, suryo) VALUES ('000D',    '福冈',        '0001',    100);

测量检验数据

图片 37

图片 38

 

实质上是 数据类型优先级  在同样层计算是 5的优先级会被暗中同意升高为 5.0

  当中常用的归纳:

  7.EXIST 

  比较多时候大致能够运用 IN 或 NOT IN 来替代该谓词。

  功能:决断是还是不是留存满意某种条件的记录。

图片 39

图片 40

 

  NOT EXIST 与 EXIST 相反,不存在:

图片 41

 

-- 顺序: =, >, <, >=, <=, <>, !=, !>, !< 

    1.IN,在...之内,检查二个值是或不是留存于钦定的会集内。     

三、CASE 表达式

   1.CASE 表达式:(条件)分歧。

 

   2.语法

--语法
--CASE WHEN <判断表达式> THEN <表达式>
--     WHEN <判断表达式> THEN <表达式>
--     ...
--     ELSE <表达式>
--END

  推断表明式类似“键 = 值”的款式,再次来到值为真值(TRUE/FALSE/UNKNOW)的表明式。如若结果为真,就能回到 THEN 子句中的表明式;即便不为真,就跳转到下一条 WHEN 子句的论断中;纵然到最后的 WHEN 子句都不为真,就执行最后一条 ELSE 的表明式。

图片 42

 

  上面是简化版的 CASE 表明式:

图片 43

 

若是相对数据类型举办展现转变能够用到

    2.BETWEEN,检查三个值是不是在钦点的间距范围内,范围包罗八个边界值。

  3.行转列

图片 44

 

图片 45

 

select cast(5 as numeric(12,2))

    3.LIKE,判别字符串是不是满意钦点的格式,比方,查询名字姓氏为黄的职工(where name like '黄%')。

备注

  这里运用 MS SQL Server 实行认证,不保障具有的 DBMS 试行结果精确。

 

图片 46

 

《SQL 基础知识梳理》种类

  《SQL 基础知识梳理(一) - 数据库与 SQL》

  《SQL 基础知识梳理(二) - 查询基础》

  《SQL 基础知识梳理(三) - 聚合和排序》

  《SQL 基础知识梳理(四) - 数据更新》

  《SQL 基础知识梳理(五) - 复杂查询》

  《SQL 基础知识梳理(六)- 函数、谓词、CASE 表明式》

  《SQL 基础知识梳理(七)- 集结运算》

 

 


【博主】反骨仔

【原文】

【参考】《SQL ゼロからはじめるデータベース操作》

 

 

 

二、运算符

    相比运算符:

=(等于) 等于
>(大于) 大于
<(小于) 小于
>=(大于或等于) 大于或等于
<=(小于或等于) 小于或等于
<>(不等于) 不等于
!=(不等于) 不等于(非 ISO 标准)
!<(不小于) 不小于(非 ISO 标准)
!>(不大于) 不大于(非 ISO 标准)

   算术运算符:

(加)
-(减)
*(乘)
/ (Divide)
%(取模) 返回一个除法运算的整数余数。 例如,12 % 5 = 2,这是因为 12 除以 5,余数为 2。

    

    逻辑运算符:

ALL 如果一组的比较都为 TRUE,那么就为 TRUE。
AND 如果两个布尔表达式都为 TRUE,那么就为 TRUE。
ANY 如果一组的比较中任何一个为 TRUE,那么就为 TRUE。
BETWEEN 如果操作数在某个范围之内,那么就为 TRUE。
EXISTS 如果子查询包含一些行,那么就为 TRUE。
IN 如果操作数等于表达式列表中的一个,那么就为 TRUE。
LIKE 如果操作数与一种模式相匹配,那么就为 TRUE。
NOT 对任何其他布尔运算符的值取反。
OR 如果两个布尔表达式中的一个为 TRUE,那么就为 TRUE。
SOME 如果在一组比较中,有些为 TRUE,那么就为 TRUE。

 

     在SQL Server中运算符分为专门的学问和非规范,如 “!=” 可用 "<>" 取代,提出选拔专门的学问的运算符。

 

 

三、关于表明式中关系八个操作数的运算(重视)

  当表明式涉及七个操作数使用算术运算符运算时,其运算结果的数据类型,依照两上边判别。

 

    1.七个数据类型一样的数值实行演算,其结果数值的数据类型和三个操作数的数据类型同样:

    比如,四个整数(int)相除生成一个整数,4/2回去整数类型2。

    依照那样的三个定论,存在着二个隐患,举个例子用5/2的时候正规结果因为2.5,然后sql Server再次来到整数类型2。当然在创造表的时候能够对此类型的列设为小数类型,那便是5.0/2.0=2.5,

    但就此情状非要运算,还要获得精确的结果时。能够像四个操作数举行数据类型调换,即:CAST(5 as Numeric(2,1)) / CAST(2 as Numeric(2,1))。

    Numeric(2,1)数据类型的意思:数值一共占2位,在那之中型小型数占一个人

    

  2.数值数据的精度和小数位:

    精度的情趣是数值中有微微位数,小数位指小数点正确到叁人,小数位的位数包括在精度里,故内定数据类型的小数位必须低于小于钦赐的精度。

    图片 47

    3.四个数据类分歧的数值实行演算,其结果的数据类型为两操作数中数据类型优先级较高的数据类型:

      比如,5/2.0中,5的数据类型为INT,2.0的数据类型为NUME奥迪Q7IC。依据SQL Server的数据类型优先级的条条框框。推断NUME本田CR-VIC优先于INT,

      则,在运算以前会把操作数5隐式地转移为5.0,得到结果就为2.5(相符其定论)。

    

    4.SQL Server数据类型优先级依次:

      能够查看MSDN最新的“数据类型优先级依次”:

      在翻看后能够发掘二个规律,正是在一样特定的限量内,数据体量大的数据类型优先级大于数据体积小的数据类型。比如int和decimal前者的精度长度超越int,

      那么在运算时得以判断decimal优先级较高与int,运算结果为decimal数据类型。

 

 

 

四、运算符优先级

  当SQL中出现复杂的表明式,那么相应就能在表明式中冒出几个运算符。那么那年,将要借助SQL Server中的运算符优先级法则,按梯次计算。   

    运算符的开始时期等级如下表中所示。 在相当低等别的运算符从前先对较高等其余运算符举办求值。

级别 运算符
1 ()圆括号
2 *(乘)、/(除)、%(取模)
3 (正)、-(负)、 (加)、 (串联)、-(减)、&(位与)、^(位异或)、|(位或)
4 =、>、<、>=、<=、<>、!=、!>、!<(比较运算符)
5 NOT
6 AND
7 ALL、ANY、BETWEEN、IN、LIKE、OR、SOME
8 =(赋值)

   由于运算符数量相当大,死记硬背下来要花点武功。分析原理大家能够以项目来制订顺序,记住个大意:(圆括号)>算术运算符>相比运算符>逻辑运算符。

   

  

本文由星彩网app下载发布于星彩彩票app下载,转载请注明出处:Server中的谓词和运算符,谓词和运算符

TAG标签:
Ctrl+D 将本页面保存为书签,全面了解最新资讯,方便快捷。