SQLServer 查询匹配字符(CHARINDEX)和替换字符

CharIndex

描述:
   在第二个字符表达式中搜索第一个字符表达式,返回第一个表达式(如果发现存在)的开始位置。
   
语法:
	CHARINDEX ( 匹配字符串 , 总字符串 [ , start_Index ] )

参数:
  	匹配字符 :要匹配的字符表达式,限制为 8000 个字符 。
   	总字符串 :要搜索的字符串总体。
 start_location :表示搜索开始位置的 integerbigint 表达式 。 如果 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)

猜你喜欢

转载自blog.csdn.net/qq_28872655/article/details/103304360
今日推荐