我需要一個SQL函數或查詢,可以從字符串中轉義'\'(反斜槓),但只有奇數個'\'(反斜槓)。如何在SQL Server中逃脫特許?
例如:
DECLARE @str nvarchar(max) ='abc\df\\gh\\\eg\\\\yu'
我現在用的是SQL Replace
功能轉義反斜線(\
)是這樣的:
@str = Replace(@str,'\','\\')
但問題是它會替換子的偶數字符串。但我只需要它應該從字符串中只替換具有'\'的偶數個子字符串。
我需要一個SQL函數或查詢,可以從字符串中轉義'\'(反斜槓),但只有奇數個'\'(反斜槓)。如何在SQL Server中逃脫特許?
例如:
DECLARE @str nvarchar(max) ='abc\df\\gh\\\eg\\\\yu'
我現在用的是SQL Replace
功能轉義反斜線(\
)是這樣的:
@str = Replace(@str,'\','\\')
但問題是它會替換子的偶數字符串。但我只需要它應該從字符串中只替換具有'\'的偶數個子字符串。
這樣的事情會起作用。首先,用數據中不存在的某些字符替換雙斜槓組。我選擇了克拉,但你可以選擇任何其他可行的角色。然後用雙精度替換斜槓,最後將臨時字符替換爲雙斜槓。
select replace(replace(Replace(@str,'\\','^'), '\', '\\'), '^', '\\')
你可以做多的替代對象:
SET @str = replace(replace(replace(@str, '\\', '~~~'), '\', '\\'), '~~~', '\\')
這假定'~~~'
不會在字符串中出現。
謝謝...它的工作。 – GreenSoft
您可以使用正則表達式+ +的東西PATINDEX如下得到這個:
declare @str nvarchar(max) = 'abc\df\gh\\eg\\\y\u'
declare @i int = 1
--select @str
while 1=1
begin
SET @i = patindex('%[a-z]\[a-z]%', @str)
if @i <= 0 break
set @str = stuff(@str,@i+1, 1, '\\')
--print @i
--print @str
end
select @str
修改正則表達式,只要你喜歡,如果有數字,以資本字符等字符串,
待辦事項你有一個示例輸出? – Steven