--=====================================================
字符集
ASCII (American Standard Code for Information Interchange) :使用8个bytes表示一个字符
UNICODE:使用16个bytes来存储一个字符
ASCII
在不同的系统或平台上会有1)相同的数字代表不同的含义,2)相同的符号有不同的编码,因此不利于系统间系统数据交换
Unicode更通用,但占用的空间也更多
依据将UNICODE字符编码后使用的空间分成UTF-8,UTF-16以及UFT-32
SQL Server提供多种字符集来处理字符串排序,不同字符集使用的排序规则不一样!
--====================================================
使用LEN来查看字符串的字符数
SELECT LEN(‘ABC你好‘)
使用DATALENGTH来查看字符串的占用空间
SELECT DATALENGTH(‘ABC你好‘)
使用CHARINDEX来查看某个字符串在
SELECT CHARINDEX(‘a‘,‘bcabc‘)
使用SUBSTRING来截取字符串(字符串的起始位置1)
LECT SUBSTRING(‘123‘,2,1)--结果2
在LIKE查询时,.匹配单个字符,%匹配任意长度字符,如果要防止转义,可
1> C1 LIKE ‘%[.]%‘
2> C1 LIKE ‘%.%‘ ESCAPE ‘.‘
使用PATINDEX来匹配字符
SELECT PATINDEX(‘%[吖-座]%‘,‘12你好0‘)
CHARINDEX 和 PATINDEX 函数都返回指定模式的开始位置。
PATINDEX 可使用通配符,而 CHARINDEX 不可以。
--=======================================================
1>对于VARCHAR
和NVARCHAR列 ,NULL值和空字符串不占用存储空间
2>对应CHAR 和NCHAR列 ,NULL值和字符串与其他非空字符串占用同样的存储空间 ,
如表TB1(C1 VARCHAR(200))
中存储行NULL值记录 ,只需要个数据页,
而TB2(C1 CHAR(200)) 中存储行NULL值记录 ,需要个数据页
3>由于CHAR 和NCHAR数据占用空间固定,可以很快定位到数据,因此在查询时速度较快
4>VARCHAR和NVARCHAR 列需要额外的两个字节来记录列实际长度
5>CHAR和NCHAR 列中数据不够的加空格补上
6>对于长度较小(低于 )数据, 可以使用CHAR或 NCHAR来提高性能