CharIndex
描述:
在第二个字符表达式中搜索第一个字符表达式,返回第一个表达式(如果发现存在)的开始位置。
语法:
CHARINDEX ( 匹配字符串 , 总字符串 [ , start_Index ] )
参数:
匹配字符 :要匹配的字符表达式,限制为 8000 个字符 。
总字符串 :要搜索的字符串总体。
start_location :表示搜索开始位置的 integer 或 bigint 表达式 。 如果 start_location 未指定、具有负数值或 0,
搜索将从 expressionToSearch 的开头开始 。
返回类型:
如果 expSearch 具有一个 nvarchar(max)、varbinary(max) 或 varchar(max) 数据类型,则为 bigint;否则为int。
注意:
如果 expFind 或 expSearch 表达式具有一个 Unicode 数据类型(nchar 或 nvarchar),而其他的表达式不具有,
CHARINDEX 函数则会将其他表达式转换为一个 Unicode 数据类型 。
CHARINDEX 不能与 image、ntext 和text 数据类型一起使用 。
如果 expressionToFind 或 expressionToSearch 表达式具有 NULL 值,CHARINDEX 则返回 NULL 。
如果 CHARINDEX 在 expressionToSearch 中找不到 expressionToFind,CHARINDEX 则返回 0 。
返回的起始位置从 1 开始,而不是从 0 开始。
实例:
1、是否有匹配的字符串,若有则>0,反之为0
Update [EquipmentInfo]
set [Configuration]=replace([Configuration],'m3/min',N'm³/min')
where charindex('m3/min',[Configuration])>0
---在数据库Configuration字段中查询“m3/min” 并更换
2、从特定位置中搜索
此示例使用可选的 start_location 参数在搜索的字符串值变量 @document 的第五个字符处开始搜索 vital 。
DECLARE @document varchar(64);
SELECT @document = 'Reflectors are vital safety' +
' components of your bicycle.';
SELECT CHARINDEX('vital', @document, 5);
GO
结果:16。
详见:[微软官方CharIndex用法](https://docs.microsoft.com/zh-cn/sql/t-sql/functions/charindex-transact-sql?view=sql-server-ver15)
REPLACE
描述:用另一个字符串值替换出现的所有指定字符串值。
用法:REPLACE ( 字符串 , 替换前 , 替换后 )
参数:
字符串:是要搜索的字符串表达式。 可以是字符或二进制数据类型 。
替换前:是要查找的子字符串。可以是字符或二进制数据类型,不能为空字符串 (''),不能超过页容纳的最大字节数 。
替换后:是替换字符串。可以是字符或二进制数据类型 。
返回类型:
如果其中的一个输入参数数据类型为 nvarchar,则返回 nvarchar;否则 REPLACE 返回 varchar 。
如果任何一个参数为 NULL,则返回 NULL。
如果 字符串 的类型不是 varchar(max) 或 nvarchar(max),则 REPLACE 将返回值截断为 8000 个字节。 若要返回大于 8,000 字节的值,则必须将 字符串 显式转换为大值数据类型 。
示例
以下示例使用 cde 替换 abcdefghi 中的字符串 xxx。
SELECT REPLACE('abcdefghicde','cde','xxx');
GO
结果:abxxxfghixxx
下面的示例使用 COLLATE 函数。
SELECT REPLACE('This is a Test' COLLATE Latin1_General_BIN,
'Test', 'desk' );
GO
结果:This is a desk
详见:[微软官方Replace用法](https://docs.microsoft.com/zh-cn/sql/t-sql/functions/replace-transact-sql?view=sql-server-ver15)