SQL 运算符和函数
字符串串联运算符(加号[+]):将两个或多个字符串合并或串联成一个字符串。
注意:ANSI SQL 规定对 NULL 值执行字符串串联运算也会产生 NULL 值的结果。这是 SQL Server 的默认行为。
通过将一个名为 CONCAT_NULL_YIELDS_NULL 的会话选项设置为 OFF,就可以改变 SQL Server 处理串联的方式。这时,SQL Server 将把 NULL 值作为空字符串来进行串联。
例如:SET CONCAT_NULL_YIELDS_NULL OFF;
注意:强烈建议避免修改 SQL Server 的标准行为。
如果要把 NULL 值作为字符串(用空字符串来替换 NULL ),可以使用 COALESCE 函数。
COALESCE(列名,N''):这个函数接受一列输入值,返回其中第一个不为 NULL 的值。
SUBSTRING : 从字符串中提取子串
语法:SUBSTRING(string,start,length)
该函数对输入的字符串进行处理,提取从指定位置开始,具有特定长度的子字符串。
如:SUBSTRING('ABCDE',1,3);得到的字符串是 'ABC‘
LEFT 和 RIGHT 函数
LEFT 和 RIGHT 函数是 SUBSTRING 函数的简略形式,它们分别返回输入字符串中从左边或右边开始指定个数的字符。
语法:LEFT(string,n),Right(string,n)
第一个参数(string)是函数要处理的字符串。第二个参数(n)是要从字符串的左边或右边提取的字符个数。
LEN 和 DATALENGTH 函数
语法:LEN(string); 返回输入字符串中的字符数。
注意:该函数返回的是输入字符串中的字符数,而不一定是其字节数。对于普通字符,这两个数字是相同的,因为每个字符只占一个字节的存储空间。而对于 Unicode 字符,每个字符需要两个字节的存储空间;因此,字符串的字符数是字节数的一半。如果要得到字节数,则应该使用 DATALENGTH 函数,而不是LEN函数。
LEN 和 DATALENGTH 函数的另一个区别是:前者不包含尾随空格,而后者会包含尾随的空格。
CHARINDEX : 返回字符串中某个子串第一次出现的起始位置
CHARINDEX(substring,string [,start_pos])
该函数在第二个参数(string)中搜索第一个参数(substring),并返回其起始位置。可以选择性地指定第三个参数(start_pos),以便告诉这个函数从字符串的什么位置开始搜索。如果未反指定第三个参数,则将从字符串的第一个字符开始搜索。如果在 string 中找不到 substring,则CHARINDEX 返回 0。
PATINDEX : 返回字符串中某个模式第一次出现的起始位置。
语法:PATINDEX(pattern,string)
参数 pattern 使用的模式与 T-SQL 中 LIKE 谓词使用的模式类似。
例如: SELECT PATINDEX('%[0-9]%','ABCD123EFGH');
返回的结果是 5。
REPLACE : 将字符串中出现的所有某个子串替换为另一个字符串。
语法:REPLACE(string,substring1,substring2)
将 string 中出现的所有 substirng1 替换为 substring2。
可以使用 REPLACE 函数来计算字符串中某个字符出现的次数。为些,先将字符串中所有的那个字符替换为空白字符串(长度为 0 的字符串),再计算字符串的原始长度和新长度的差值。
REPLICATE : 以指定的次数复制字符串值。
语法: REPLICATE(string,n)
STUFF :可以先删除字符串中的一个子串,再插入一个新的子字符串作为替换。
语法: STUFF(string,pos,delete_length,insertstring)
该函数对输入参数 string 进行处理,从输入参数 pos 指定的位置开始删除 delete_length 参数指定长度的字符;然后将 insertstring 参数指定的字符串插入到 pos 指定的位置。
UPPER 和LOWER 函数
UPPER 和 LOWER 函数将输入字符串中的所有字符都转换为大写或小写字符。
语法:UPPER(string), LOWER(string)
RTRIM 和 LTRIM 函数
RTRIM 和 LTRIM 函数用于删除输入字符串中的尾随空格或前导空格。
语法:RTRIM(string), LTRIM(string)
如果既想删除前导空格,也想删除尾承受空格,则可以将一个函数的结果作为另一个函数的输入来使用。
例如:RTRIM(LTRIM(' ABC '))。