郑州网站快速制作,招商服务平台,wordpress 主题 支付宝,icp是网站备案由于SQL Server的REPLACE函数用于替换字符串中的指定子字符串。它执行的是精确替换#xff0c;所以想进行模糊替换或基于模式的替换#xff0c;需要结合REPLACE使用CHARINDEX和SUBSTRING函数。
简单的介绍一下CHARINDEX函数和SUBSTRING函数#xff1a;
CHARINDEX(substrin…由于SQL Server的REPLACE函数用于替换字符串中的指定子字符串。它执行的是精确替换所以想进行模糊替换或基于模式的替换需要结合REPLACE使用CHARINDEX和SUBSTRING函数。
简单的介绍一下CHARINDEX函数和SUBSTRING函数
CHARINDEX(substring, string, start_location) CHARINDEX(要查找的子字符串, 要查找的子字符串, 可选是开始查找的位置。) 【一般用于提取或搜索数据。】 【查找一个子字符串在另一个字符串中的位置的函数。】
SELECT CHARINDEX(apple, I like apples and bananas.);
-- 返回结果为 8STUFF(string1, start, length, string2) SUBSTRING(主字符串, 起始位置 起始位置是从1开始计数的, 要删除的字符数量插入到 string1 中的新字符串) 【用于从文本字段中提取部分数据】例如提取名字或地址的一部分。 【它也可用于修改或处理字符串数据。】
SELECT STUFF(Hello, World!, 7, 5, SQL) AS Result;
-- 返回结果为 Hello, SQL!STUFF 函数将从第 7 个字符位置开始即逗号后面删除长度为 5 的字符包括空格然后插入字符串 SQL。LEN 函数 LEN(string) 【用于检查字符串的长度以进行有效性验证或数据处理】 SELECT FirstName, LastName, LEN(FirstName LastName) AS FullNameLength
FROM Employees;FirstName LastName FullNameLengthJohn Doe 8Jane Smith 10Mike Johnson 12
repalce模糊替换 字符串 将B替换成DABC——ADC
DECLARE OriginalString NVARCHAR(MAX) This is a test string with typos.
DECLARE SearchString NVARCHAR(MAX) typos
DECLARE ReplaceString NVARCHAR(MAX) errors-- 查找搜索字符串的位置
DECLARE StartPosition INT CHARINDEX(SearchString, OriginalString)-- 检查是否找到了搜索字符串然后进行替换
IF StartPosition 0
BEGINSET OriginalString STUFF(OriginalString, StartPosition, LEN(SearchString), ReplaceString)
ENDSELECT OriginalString将A后4位替换成1234 ABCDE——A1234
DECLARE OriginalString NVARCHAR(MAX) Ndiv stylebackground-color:#E9F4FF;width:100%;-- 查找 width 的位置
DECLARE WidthStartPosition INT CHARINDEX(width:, OriginalString)-- 如果找到 width则进行替换
IF WidthStartPosition 0
BEGIN-- 取 width 后面的 4 位字符并替换为 102%SET OriginalString STUFF(OriginalString, WidthStartPosition 6, 4, 102%)
ENDSELECT OriginalString
在A和C之间替换成1 ABC——A1C
DECLARE OriginalString NVARCHAR(MAX) Ndiv stylebackground-color:#E9F4FF;width:100%;-- 找到 width 和 % 的位置
DECLARE WidthStartPosition INT CHARINDEX(width:, OriginalString)
DECLARE PercentageEndPosition INT CHARINDEX(%;, OriginalString)-- 如果找到 width 和 %则进行替换
IF WidthStartPosition 0 AND PercentageEndPosition 0
BEGIN-- 计算要替换的内容的起始位置和长度DECLARE ReplaceStartPosition INT WidthStartPosition 6DECLARE ReplaceLength INT PercentageEndPosition - ReplaceStartPosition-- 将内容替换为 102SET OriginalString STUFF(OriginalString, ReplaceStartPosition, ReplaceLength, 102)
ENDSELECT OriginalString
在1234567的第二位之后插入ABC1234567——1ABC234567
DECLARE OriginalString NVARCHAR(MAX) 1234567;-- 在字符串的第二位之后插入指定的内容
SET OriginalString STUFF(OriginalString, 2, 0, ABC);SELECT OriginalString; 字段 将表A中的column字段中的从width到%之间替换成102
-- 更新表 A 中的 column 字段
UPDATE A
SET column REPLACE(column,SUBSTRING(column, CHARINDEX(width, column), CHARINDEX(%, column) - CHARINDEX(width, column) 1),width:102%
)
WHERE CHARINDEX(width, column) 0 AND CHARINDEX(%, column) CHARINDEX(width, column);