2019独角兽企业重金招聘Python工程师标准>>>

表结构与数据:https://github.com/XuePeng87/TSQLV4

使用字符数据

设计字符数据的查询操作,包括数据类型、排序规则、运算符和函数,以及模式匹配。

数据类型

SQL Server支持两种字符数据类型,即常规和Unicode。常规数据类型包括CHAR和VARCHAR,Unicode数据类型包括NCHAR和NVARCHAR。常规字符的每个字符使用1个字节存储,而Unicode数据的每个字符要求2个字节,并且需要一个代理项对时,要求4个字节。如果为列选择了常规字符类型,会被限制除英语之外仅能使用一种语言。列支持的语言取决于列的有效规则。使用Unicode数据类型可以支持多种语言,所以如果你需要存储多种语言的字符数据,请确保使用Unicode字符类型,而不是常规字符类型。

名称中没有VAR元素的任何数据类型(CHAR、NCHAR)具有固定长度,即SQL Server按照列定义的大小保留行空间,而不是按照字符串中的实际字符数保留空间。

名称中含有VAR元素的数据类型(VARCHAR、NVARCHAR)具有可变长度,即SQL Server根据存储需要,在行中使用尽可能多的存储空间存储字符串中的字符,外加两个额外的字节偏移数据。

可变长度数据类型的数据更新效率低于固定长度数据类型。

还可以使用MAX来定义可变长度数据类型,而不是使用最大字符数。MAX默认是8000个字节,超过这个数值的任何值会作为大型对象(LOB)存储在行的外部。

排序规则

排序规则是一个字符数据属性,包括语言支持、排序顺序、区分大小写和区分重音等。可以查询表函数fn_helpcollations查看支持的排序规则及其说明的结果集。

SELECT name, description FROM sys.fn_helpcollations();

例如,对排序规则Latin1_General_CI_AS的说明:

  • Latin1_General:支持英语和德语字符,以及大多数西欧国家使用的字符;
  • CI数据不区分大小写(a=A);
  • AS数据区分重音(à<>ā);

在企业内部部署SQL Server实施中,排序规则可以定义在4个不同层级:实例、数据库、列和表达式,SQL Server将使用最低有效级别的排序规则。

实例的排序规则是安装程序选择的一部分,它确定所有系统数据库的排序规则,并作为用户数据库的默认规则。数据库的排序规则决定了数据库对象元数据的排序规则,并默认应用与用户列表。可以在列定义中使用COLLATE子句显示地指定列的排序规则,否则默认使用数据库的排序规则。例如:

SELECT empid, firstname, lastname
FROM HR.Employees
WHERE lastname = N'davis';

将返回lastname=Davis的行,尽管大小写不匹配,但是不区分大小写是有效的书写形式,如果希望筛选区分大小写,那么可以按下面的转换表达式排序规则进行查询:

SELECT empid, firstname, lastname
FROM HR.Employees
WHERE lastname COLLATE Latin1_General_CS_AS = N'Davis';

运算符和函数

1.字符串连接

T-SQL提供了+和CONCAT函数(SQL Server2012提供)连接字符串,例如:

SELECT empid, firstname + N' ' + lastname AS fullname
FROM HR.Employees;SELECT custid, country, region, city,
country + N',' + region + N',' + city AS location
FROM Sales.Customers;SELECT custid, country, region, city,
CONCAT(country, N',' + region, N',' + city) AS location
FROM Sales.Customers;

标准SQL规定了连接NULL的结果应为NULL。而CONCAT函数则会将NULL替换成空字符串。

2.SUBSTRING函数

次函数对于输入的string字符串,从start位置开始,提取length个字符。例如,下面的代码返回"abc":

SELECT SUBSTRING('abcdefg', 1, 3);

如果第三个参数超出了输入的字符串的末尾,并不会引发错误,函数将返回一直到末尾的所有字符。

3.LEFT和RIGHT函数

LEFT和RIGHT函数是SUBSTRING函数的简化形式,可以从输入字符串的左边或右边返回制定数量的字符串,例如,下面的代码返回"ced":

SELECT RIGHT('abced', 3);

4.LEN和DATALENGTH函数

LEN函数返回输入字符串中字符的数量,并且会删除尾随的空格,下面代码返回5:

SELECT LEN(N'abcde')

DATALENGTH函数返回输入字符串存储的字节数,不删除尾随的空格,下面代码返回10:

SELECT DATALENGTH(N'abcde')

5.CHARINDEX函数

CHARINDEX函数返回子字符串在字符串中第一次出现的位置,例如,下面代码返回6:

SELECT CHARINDEX(' ','Itzik Ben-Gan');

6.PATINDEX函数

返回模式在字符串中第一次出现的位置,例如下面的代码返回5:

SELECT PATINDEX('%[0-9]%','abcd123efgh');

7.REPLACE函数

REPLACE(string,substring1,substring2)函数,使用substring2替换string中出现的所有substring1,例如,下面将'1-a 2-b'中的'-'替换成':':

SELECT REPLACE('1-a 2-b', '-', ':')

8.REPLICATE函数

可以按照指定的次数重复一个字符串,例如下面的代码将返回'abcabcabc':

SELECT REPLICATE('abc', 3)

9.STUFF函数

允许从字符串中逸出指定数量的字符,并插入一个替代的新子字符串。例如将'xyz'中的'y'替换成'abc':

SELECT STUFF('xyz', 2, 1, 'abc')

10.UPPER和LOWER函数

将字符串全部转大写或转小写。

11.RTRIM和LTRIM喊出

删除尾随的或者前端的空格。

12.FORMAT函数

允许按照Microsoft.NET格式字符串和一个可选的区域参数,将输入值格式化成另一个字符串,例如将1759前面加上6个0:

SELECT FORMAT(1759, '0000000000')

13.LIKE谓词

1.(%)百分号通配符:代表一个任意大小的字符串,包括空字符串;

2.(_)下划线通配符:代表单个字符;

3.([<List of Characters>])字符列表通配符:方括号内带有字符列表的意思是,代表单个字符必须是列表中的指定字符之一,例如下面的查询返回姓氏的第一个字符是A、B或C的雇员:

SELECT empid, lastname
FROM HR.Employees
WHERE lastname LIKE N'[ABC]%';

4.([<Character>]-<Character>)字符范围通配符:代表单个字符必须在指定的范围内,例如,下面的查询返回姓氏的第一个字符位于字母A~E范围内的雇员:

SELECT empid, lastname
FROM HR.Employees
WHERE lastname LIKE N'[A-E]%';

5.([^<Character List or Range>])未指定范围通配符:代表单个字符没有在指定的字符列表或范围内,例如,下面的查询将返回姓氏第一个字符不是A~E范围内的雇员:

SELECT empid, lastname
FROM HR.Employees
WHERE lastname LIKE N'[^A-E]%';

6.ESCAPE字符

如果想要搜索已用作通配符的字符(如"%"、"_"、"["或]""),需要使用一个转义字符。例如,要检查col1列中是否包含下划线,可以用 col1 LIKE '%!_%' ESCAPE '!'。

转载于:https://my.oschina.net/u/2981366/blog/775513

3.《SQLSERVER2012之T-SQL教程》T-SQL单表查询(三)相关推荐

  1. 数据库标准语言SQL(六)——单表查询(二)

    数据库标准语言SQL(五)--查询(二) 一.前言 这一次内容继续是单表查询的部分,然后单表查询就结束了. 二.示例 1.用值表确定集合查询 引入谓词IN 查找属性值属于指定集合的元组,可以让我们在查 ...

  2. SQL sever数据库的单表查询和连接查询

    数据库的单表查询和连接查询 一.目的: 掌握无条件查询的使用方法. 掌握条件查询的使用方法. 掌握库函数及汇总查询的使用方法. 掌握分组查询的使用方法. 掌握查询的排序方法. 掌握连接查询的使用方法. ...

  3. SQL Server 数据库之单表查询

    单表查询 1. 概述 2. 单表查询命令 2. 无条件查询与条件查询 2.1 无条件查询 2.2 条件查询 3. 聚集函数 4. 分组查询 5. 排序查询 1. 概述 单表查询是只对一个数据表进行查询 ...

  4. oracle数据库查询需步骤,PLSQL操作Oracle数据库之单表查询SQL语句 看完你就知道了...

    Orcale数据库作为商业级的大型关系型数据库管理系统,以其较高的安全性和强大的可移植性赢得了市场的广泛认可,而PLSQL作为操作Oracle的编程语言的最佳选择,掌握其编程原理及基本的sql操作是掌 ...

  5. SQL基础系列(二)——单表查询

    本文以单表查询为边界,介绍如何对一张表进行简单查询.限制条件查询.结果排序等内容.每种情况均有例句和补充说明. 如想看更多示例,请移步<SQL基础教程(第二版)>-MICK(如需电子版,可 ...

  6. 学数据库还不会Select,SQL Select详解,单表查询完全解析?

    查询操作是SQL语言中很重要的操作,我们今天就来详细的学习一下. 一.数据查询的语句格式 SELECT [ALL|DISTINCT] <目标列表达式>[,<目标列表达式> .. ...

  7. SQL数据查询之——单表查询

    一.SQL数据查询的一般格式 数据查询是数据库的核心操作.SQL提供了SELECT语句进行数据查询,其一般格式为: SELECT [ALL | DISTINCT]<目标列表达式>[,< ...

  8. server多笔记录拼接字符串 sql_第四章、SQL Server数据库查询大全(单表查询、多表连接查询、嵌套查询、关联子查询、拼sql字符串的查询、交叉查询)...

    4.1.查询的类型 declare @value as int set @value = 50 select  'age:'as age,2008 years,@valueas va --这种查询时跟 ...

  9. SQL数据查询——单表查询(二)

    集合查询+单表查询相关实例 集合查询 1.UNION 2.INTERSECT 3.EXCEPT 相关实例 实例1 实例2 集合查询 SQL SERVER集合操作主要包括 并操作 UNION 交操作 I ...

最新文章

  1. 刻意练习:LeetCode实战 -- Task10. 两数相加
  2. 使用Nagios监控网页
  3. 分布式锁的几种实现方式
  4. hdu 2879【留坑】
  5. 第九届蓝桥杯java B组—第三题复数幂(详细介绍)
  6. 读书笔记_代码大全2第十章_变量初始化
  7. tensorflow2 神经网络模型构建4种方法
  8. 操作系统下查看HBA卡信息wwn的方法
  9. java jpanel 叠加_java – 如何在JPanel上叠加,调整大小和居中组件?
  10. RPC 和 RESTful对比
  11. 若依前端table中如何显示图片?
  12. java二进制 中文_Java 实现中文与二进制代码互转
  13. 2020-10-18
  14. matlab正弦函数傅里叶变换,正弦函数及其傅里叶变换 二
  15. DEA博弈交叉效率matlab,基于博弈交叉效率DEA模型的服务模块化创新绩效测量—以江西省文化创意产业为例...
  16. InletexEMC 多人屏幕共享工具
  17. CSS度量单位px/pt/em/in/pc/mm/cm
  18. Azure与Aliyun服务对比
  19. 爬虫之巨潮资讯网关键词信息获取
  20. 服务器上pdf文档无法删除,怎么对PDF文件进行编辑,PDF怎么删除空白页

热门文章

  1. ITK:向量值图像像素的变换幅度
  2. VTK:小部件之BorderWidget
  3. VTK:小部件之ImageTracerWidgetInsideContour
  4. VTK:PolyData之DeletePoint
  5. Qt Designer的编辑模式
  6. OpenGL实现Amiga Boing
  7. C++实现digkstra最短路径算法(附完整源码)
  8. QT的QMaterial类的使用
  9. c++ 预处理命令 #undef用法
  10. C语言必知的几个概念