sqlserver 字符串相关函数
1、left函数用于截取从左边第一个字符开始,指定长度的字符串。其执行效果等于substring(expression,1,length)。语法:left(character_expression,integer_expression) select left('123456',3) --输出 123 2. right 函数 用于返回字符串最右边开始的指定数目的字符 语法:right(string,length) 示例: select right('abcdefgh',3) -- 返回 fgh 3. replicate 函数 以指定的次数重复字符表达式。? ? 语法 : replicate(? ?character_expression? ?,? ?integer_expression? ?)?? 示例: select replicate('0',5) -- 返回 00000 select replicate('ab',2) -- 返回 abab select right(replicate('0',8) + '2314',8) -- 保持8位数字,位数不够左侧补0 4. patindex 函数 返回指定表达式中第一次出现的模式的起始位置,如果找不到模式,则返回所有有效的文本和字符数据类型的零。 语法 : patindex( '%pattern%',expression )? ? 参数:pattern? 一个文字字符串。可以使用通配符,但 pattern 之前和之后必须有 % 字符(搜索第一个或最后一个字符时除外)。pattern 是字符串数据类型类别的表达式。 expression? 一个表达式,通常为要在其中搜索指定模式的列,expression 为字符串数据类型类别。 返回类型 如果 expression 的数据类型为 varchar(max) 或 nvarchar(max),则为 bigint,否则为 int。 返回0-则为纯数字(支持正负数,小数点) 示例: select patindex('%[^0-9|.|-|+]%','2.2')--返回0 --返回0-则为纯整数 select patindex('%[^0-9]%','2.2')--返回 select patindex('%from%','select * from test') -- 搜索开头的字符串 select patindex('select%','select * from test') -- 搜索末尾的select select patindex('%test','select * from test') 5. charindex 函数 在表达式中搜索另一个表达式,如果找到,则返回其起始位置。 语法:charindex( expressionToFind,expressionToSearch [,start_location ] )? ? expressionToFind 是包含要找到的序列的字符表达式。expressionToFind被限制为8000个字符。 expressionToSearch 是要搜索的字符表达式。 start_location 是开始搜索的整数或bigint表达式。如果start_location没有被指定,是一个负数,或者是0,那么搜索从expressionToSearch开始。 返回类型 bigint if expressionToSearch是varchar(max),nvarchar(max)或varbinary(max)数据类型; 否则,int。如果没有搜索到,则返回0 示例: select charindex('from','select * from test') -- 从一个特定的位置搜索 select charindex('from','select * from test',5) -- 执行区分大小写的搜索 select charindex('Test','This is a Test' collate Latin1_General_CS_AS); -- 执行不区分大小写的搜索 select charindex('TEST','This is a Test' collate Latin1_General_CI_AS); 6. parsename函数 用于linked servers中的object name,owner name,database name,and server name. 用于分隔的字符串最多含有三个 '.' , 及4部分? ? ?? ? ? ?? 示例? ? ? ? ? ? ? ?? select parsename('server1.dbname1.dbo.table',1) as 'Object Name',parsename('server1.dbname1.dbo.table',2) as 'Schema Name',3) as 'Database Name',4) as 'Server Name' -- Object Name Schema Name Database Name Server name ---------------------------------------------------------- -- table dbo dbname1 server1? ? ? ?? ? ?? ? ? ? 7、ASCII 函数 ? ? ? ? ASCII码是对字符的标准编码。要获取字符的ASCII码就可以通过调用ASCII函数来实现。 ? ? ? ? 语法结构: ? ? ? ? ASCII(espression) 这里的expression是一个返回char或varchar数据类型的表达式,ASCII函数仅对表达式最左侧的字符返回ASCII码值。 ? ? ? ? 返回值:int数据类型。 ? ? ? ? 示例:? ? ? ? select ascii('a') --输出 97 select ascii('abc') --输出 97? ? ? ? 8、Char 函数 用于获取 ASCII 码对应的字符? ? ? ? char(integer_expression) ? ? ? ? 示例: select char(102) -- 输出f select 'aaa' + CHAR(10) + 'bbb' -- 换行符 -- 替换回车换行符 select replace(replace('select * from sys.objects',char(10),''),char(13),'') -- select * from sys.objects? ? ? ? 9、substring 函数 substring函数可以对字符串进行字串的截取操作。 ? ? ? ? 语法结构: substring( expression,start,length) ? ? ? ? expression:是字符串、二进制字符串、文本、图像、列或包含列的表达式,但不要使用包含聚合函数的表达式。 ? ? ? ? start:指定子字符串开始位置的整数,start可以使bigint类型。 ? ? ? ? length:一个正整数,指定要返回的expression的字符数或字节数。如果length为负,则会返回错误。length可以使bigint数据类型。 ? ? ? ? 如果expression是受支持的字符数据类型,则返回字符数据。? ? ? ? 如果expression是受支持的binary数据类型,则返回二进制数据。 ? ? ? ? 示例:? ? ??select substring('hello',2) --它第一个字符是从1开始的 10、ltrim 函数 如果字符串的字一个字符为空格,LTRIM函数用于清除连续的左边空格。 语法结构: ltrim(character_expression)character_expression为字符或二进制数据表达式,可以是常量、变量或数据列。 ? ? ? ? 返回值: varchar或nvarchar,变长字符串。 ? ? ? ? 示例: select substring('hello',2) --它第一个字符是从1开始的 11、rtrim函数 rtrim函数用于清空右边连续的空格。 ? ? ? ? 语法结构:? ? ? rtrim(character_expression) character_expression为字符或二进制数据表达式,可以是常量、变量或数据列。 ? ? ? ?返回值: varchar或nvarchar,变长字符串。 ? ? ? ? 示例:? ? ? ? select rtrim('123456 ') --输出123456 12、lower 函数 lower函数将字符串全部转换为小写字符后返回。 ? ? ? ? 语法结构:lower(character_expression) 返回值: varchar或nvarchar,变长字符串? ? ? ? 示例:? ? ? ? select lower('ABCDEFG') --输出 abcdefg? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?? 13、upper 函数upper函数用于将字符串全部转换为大写字符后返回。? ? ? ? 语法结构:upper(character_expression) character_expression为字符或二进制表达式,可以是常量,变量或数据列。 ? ? ? ? 返回值: varchar或nvarchar,变长字符串。 ? ? ? ? 示例: select upper('abcdefg') --输出 ABCDEFG? ? ? ?? ? ? ? 14、reverse 函数reverse函数用于将字符串内容反序后返回。? ? ? ? 语法结构:reverse(character_expression) character_expression:为二进制或二进制数据表达式,可以是常量、变量或数据列。 ? ? ? ? 返回值: varchar或nvarchar,变长字符串 ? ? ? ? 示例:? ? select reverse('123456789') --输出 987654321 15、len 函数len函数用于获取字符串的长度(字符数),但不包括右边的空格。左边的空格和右边的空格计算在内。? ? ? ? 语法结构:len( string_expression ) 参数说明: string_expression:要计算长度的字符串。? ? ? ? 返回值:expression数据类型为varchar(max)、nvarchar(max)或varbinary(max),则为bigint。否则为int。 ? ? ? ? 示例: select len('abcd一二三') -- 输出 7? 16、datalength 函数datalength函数用于获取字符串的字节数,而不是字符数。该函数不仅适合字符串数据,还适合文本(text、ntext)、二进制数据(varbinary、binary)和图像(image)等任意类型的数据。? ? ? ? 语法结构:datalength(expression) ? ? ? ?如果expression数据类型为varchar(max)、nvarchar(max)或varbinary(max)数据类型,则返回bigint;否则返回int。 ? ? ? ? 示例:? ? ? ? select datalength('abcdefg') --输出7 select datalength('abcd一二三') -- 输出 10 17、replace 函数用另一个字符串值替换出现的所有指定字符串值。? ? ? ? 语法如下:replace( string_expression1,string_expression2,string_expression3 ) 参数 string_expression1:要搜索的字符串表达式。string_expression1 可以是字符或二进制数据类型。string_expression2:要查找的子字符串。string_expression2 可以是字符或二进制数据类型。 string_expression3:替换字符串。string_expression3 可以是字符或二进制数据类型。 ? ? ? ? 示例 select replace('abcde','abc','123') --123de? ? ? ? 18、stuff 函数stuff函数用于在指定的字符串中删除指定长度的字符,并在起点处插入另外一组字符。? ? ? ? 语法结构:stuff(source_character_expression,start,length,destination_character_expression) 参数说明: source_character_expression:源字符串。可以是常量、变量,也可以使字符列或二进制数据列。start:一个整数,指定删除和插入的开始位置。如果start或length为负,则返回空字符串。如果start比第一个character_expression长,则返回空字符串。start可以是bingint类型。 length:一个赠书,指定要删除的字符个数。如果length比第一个charter_expression长,则最多删除到最后一个character_expression中最后一个字符。length可以是bigint类型。 destination_character_expression:目的字符串。可以是常量、变量,也可以使字符列或二进制数据列。将在源字符串中执行插入。 ? ? ? ? 示例: ? ? ? ? select stuff('1234567',5,2,'xyz') --输出1234xyz7 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |