![SQL Server 从入门到项目实践(超值版)](https://wfqqreader-1252317822.image.myqcloud.com/cover/709/27111709/b_27111709.jpg)
4.4 运算符
运算符是一些符号,它们能够用于执行算术运算、字符串连接、赋值以及在字段、常量和变量之间进行比较。在SQL Server中,运算符主要有以下6大类:算术运算符、赋值运算符、比较运算符、逻辑运算符、连接运算符以及按位运算符。
4.4.1 算术运算符
![](https://epubservercos.yuewen.com/2AE60C/15477656704589106/epubprivate/OEBPS/Images/Figure-P60_8095.jpg?sign=1739310549-trPlUOB7QYqXTb0XME2EdbV7kL6hhhQj-0-fa1d44a1341fc565fe00407046926072)
算术运算符可以在两个表达式上执行数学运算,这两个表达式可以是任何数值数据类型。SQL中的算术运算符如表4-2所示。
表4-2 SQL中的算术运算符
![](https://epubservercos.yuewen.com/2AE60C/15477656704589106/epubprivate/OEBPS/Images/Figure-T60_8096.jpg?sign=1739310549-kQHEEvJKSVRU3JtOGg9ywl7npmA3PVBW-0-00e27d735b57009ea8a59943bc39c604)
加法和减法运算符也可以对日期和时间类型的数据执行算术运算,求余运算即返回一个除法运算的整数余数,例如,表达式14%3的结果等于2。
4.4.2 比较运算符
![](https://epubservercos.yuewen.com/2AE60C/15477656704589106/epubprivate/OEBPS/Images/Figure-P60_8094.jpg?sign=1739310549-jGEyUeiUlwaHAyH8bRZ00lk0cqQkXVyt-0-0ffe060ef587ecf9f41ee9d01871a1e8)
比较运算符用来比较两个表达式的大小,表达式可以是字符、数字或日期数据,其比较结果是布尔值。比较运算符测试两个表达式是否相同。除了text、ntext或image数据类型的表达式外,比较运算符可以用于所有的表达式。表4-3列出了SQL中的比较运算符。
表4-3 SQL中的比较运算符
![](https://epubservercos.yuewen.com/2AE60C/15477656704589106/epubprivate/OEBPS/Images/Figure-T60_8097.jpg?sign=1739310549-fM2uefz4HFYiTJBcgaqxfnU2JGxshjnT-0-8efa2d224b24e6f7f82317207f08f06c)
4.4.3 逻辑运算符
![](https://epubservercos.yuewen.com/2AE60C/15477656704589106/epubprivate/OEBPS/Images/Figure-P60_8093.jpg?sign=1739310549-360XqGtIFbX3QtSjXgvfFXaJLXmqe8gb-0-d1c363044fd4c665196478e9fe2de177)
逻辑运算符可以把多个逻辑表达式连接起来测试,以获得其真实情况,返回带有TRUE、FALSE或UNKNOWN值的Boolean数据类型。SQL中包含如表4-4所示的一些逻辑运算符。
表4-4 SQL中的逻辑运算符
![](https://epubservercos.yuewen.com/2AE60C/15477656704589106/epubprivate/OEBPS/Images/Figure-T61_8238.jpg?sign=1739310549-nQOhOWNXaV9Mj4ftp3Dj3lTxMCavE4rg-0-800f82e065717581b52a24e498433fca)
4.4.4 连接运算符
![](https://epubservercos.yuewen.com/2AE60C/15477656704589106/epubprivate/OEBPS/Images/Figure-P61_8237.jpg?sign=1739310549-NSpw2YknruNt3leInILDpU6Wu2Arop61-0-6613c21b13a66b0bc238f53f485e481d)
加号(+)是字符串串联运算符,可以将两个或两个以上字符串合并成一个字符串。其他所有字符串操作都使用字符串函数(如SUBSTRING)进行处理。
默认情况下,对于varchar数据类型的数据,在INSERT或赋值语句中,空的字符串将被解释为空字符串。在串联varchar、char或text数据类型的数据时,空的字符串被解释为空字符串。例如,'abc'+''+'def'被存储为'abcdef'。
4.4.5 按位运算符
![](https://epubservercos.yuewen.com/2AE60C/15477656704589106/epubprivate/OEBPS/Images/Figure-P61_8236.jpg?sign=1739310549-qVfr35XZ9BiLn3qxmvulf8EsvEarSthx-0-66e020642569ef2fd2825520f18de770)
按位运算符在两个表达式之间执行位操作,这两个表达式可以为整数数据类型类别中的任何数据类型。SQL中的按位运算符如表4-5所示。
表4-5 按位运算符
![](https://epubservercos.yuewen.com/2AE60C/15477656704589106/epubprivate/OEBPS/Images/Figure-T61_8239.jpg?sign=1739310549-cPc4C9VBhzqSxuhQxqEVo7V306ne8Bb9-0-b40f3fd874ef4ebef200b50f1884b44f)
4.4.6 运算符的优先级
![](https://epubservercos.yuewen.com/2AE60C/15477656704589106/epubprivate/OEBPS/Images/Figure-P61_8235.jpg?sign=1739310549-ZWH2cdjq1t0R5nsrcXiVD6j4O9PJ0jKq-0-5cf205ed3052b3269355c05d704b0b86)
当一个复杂的表达式有多个运算符时,运算符优先级决定执行运算的先后次序。执行的顺序可能严重地影响所得到的值,在较低级别的运算符之前先对较高级别的运算符进行求值,如表4-6所示按运算符从高到低的顺序列出了SQL Server中的运算符优先级别。
表4-6 SQL Server运算符的优先级
![](https://epubservercos.yuewen.com/2AE60C/15477656704589106/epubprivate/OEBPS/Images/Figure-T62_37313.jpg?sign=1739310549-C6BtTEQgvhdtbsOQSLIwEeAYk0yCsZpX-0-2ce73c7a15a15f2e5063c2f9a9d1e6b1)
当一个表达式中的两个运算符有相同的运算符优先级别时,将按照它们在表达式中的位置对其从左到右进行求值。当然,在无法确定优先级的情况下,可以使用圆括号()来改变优先级,并且这样会使计算过程更加清晰。