SUBSTRING ( expression ,start , length )
参数
. expression
字符串、二进制字符串、文本、图像、列或包含列的表达式。不要使用包含聚合函数的表达式。
.start
指定子字符串从何处开始的整数。start可以是bigint类型;索引从1开始
.length
长度是一个正整数,它指定返回表达式的字符或字节数。如果长度为负值,则返回错误。长度可以是bigint型
SELECT SUBSTRING('LGAG4DY30B353',1,10) --截取前10位返回结果 LGAG4DY30B
STUFF ( character_expression , start , length , replaceWith_expression )
参数
.character_expression
字符数据的表达式可以是常量、变量,也可以是字符列或二进制数据列。
.start
一个整数值,指定删除和插入的开始位置。 如果 start 为负或为零,则返回空字符串。 如果 start 的长度大于第一个 character_expression,则返回空字符串。 start 的类型可以是 bigint。索引从1开始。
.length
一个整数,指定要删除的字符数。 如果 length 为负,则返回空字符串。 如果 length 的长度大于第一个 character_expression,则最多可以删除到最后一个 character_expression 中的最后一个字符。 如果 length 为零,则在字符串中第一个字符之前插入内容。 length 的类型可以是 bigint。
.replaceWith_expression
字符数据的表达式。 character_expression 可以是常量、变量,也可以是字符列或二进制数据列。 此表达式从 start 开始替换 length 个字符的 character_expression。 如果 replaceWith_expression 为 NULL,则在不插入任何内容的情况下删除字符。
SELECT STUFF('LGAG4DY30B',9,1,'-') --返回结果 LGAG4DY3-B
SELECT 字段 FROM 表名 FOR JSON AUTO
SELECT 字段 FROM 表名 FOR JSON PATH
select top 1 Id,Name,CreateTime from Log for json path --返回结果 [{"Id":1,"Name":"车辆信息查询","CreateTime":"2018-09-06T09:00:28.090"}]
SELECT 字段 FROM 表名 FOR JSON PATH,ROOT(' ')
select top 1 Id,Name,CreateTime from Log for json path,root('Log') --返回结果 {"Log":[{"Id":1,"Name":"车辆信息查询","CreateTime":"2018-09-06T09:00:28.090"}]}
FOR XML PATH 用法类似
FOR XML PATH和STUFF结合使用,将字段用逗号连接起来
select STUFF((select ','+CONVERT(varchar(200),ID) from SMP_Case for xml path('')),1,1,'') as IDs
CHARINDEX ( expressionToFind , expressionToSearch [ , start_location ] )
参数
.expressionToFind
一个字符表达式,其中包含要查找的序列。 expressionToFind 限制为 8000 个字符 。
.expressionToSearch
要搜索的字符表达式。
.start_location
表示搜索开始位置的 integer 或 bigint 表达式 。 如果 start_location 未指定、具有负数值或 0,搜索将从 expressionToSearch 的开头开始 。
select CHARINDEX('-','LGWE13243-ABC') 返回结果10
PATINDEX ( '%pattern%' , expression )
参数
.pattern
包含要查找的序列的字符表达式。 可以使用通配符;但 pattern 之前和之后必须有 % 字符(搜索第一个或最后一个字符时除外) 。 pattern 是字符串数据类型类别的表达式 。 pattern最多包含 8000 个字符 。
.expression
是一个expression,通常是针对指定模式搜索的列。 expression 是字符串数据类型类别的表达式 。
select PATINDEX('%-%','243532B-ACFDF3333') 返回结果8
参考: https://docs.microsoft.com/zh-cn/sql/t-sql/functions/len-transact-sql?view=sql-server-2017