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    '))。

原文地址:https://www.cnblogs.com/zhangdx/p/2875846.html