gpt4 book ai didi

sql-server - SQL Server 2012 的 STRING_ESCAPE( 'SOME TEXT' , 'json' ) 替代方案

转载 作者:行者123 更新时间:2023-12-03 03:38:38 26 4
gpt4 key购买 nike

我们有多个版本的 SQL Server(2016 年、2012 年),不幸的是,STRING_ESCAPE 仅在 2016 年才有效,因为它是在该版本中引入的。当我在 SQL Server 2012 中执行相同的查询时,出现以下错误。

SELECT STRING_ESCAPE(description, 'json') 
FROM SomeTable

错误:

Msg 195, Level 15, State 10, Line 1
'STRING_ESCAPE' is not a recognized built-in function name.

对于 SQL Server 2012,还有 STRING_ESCAPE 的替代方案吗?

最佳答案

没有直接内置的函数,但您可以很容易地创建自己的函数,其中您有一个包含要替换的字符及其编码的表。您甚至可以为 json、xml 等添加一列。然后,该函数将获取要替换的数据,执行REPLACE并返回“更改后的”字符串:

CREATE TABLE dbo.tb_StringEncoding
(
StringToReplace nvarchar(10),
StringReplacement nvarchar(10),
EncodingType nvarchar(25)
CONSTRAINT pk_StringEncoding PRIMARY KEY
(EncodingType, StringToReplace)
)

INSERT INTO dbo.tb_StringEncoding(StringToReplace, StringReplacement, EncodingType)
VALUES ( '"', '\"', 'json')
, ('\', '\\', 'json')
, ('/', '\/', 'json')
, ('{', '\{', 'json')
, ('}', '\}', 'json');
GO

CREATE FUNCTION dbo.fn_String_Escape(@StringToEscape nvarchar(max), @Encoding nvarchar(10))
RETURNS nvarchar(max)
BEGIN
DECLARE @s nvarchar(max);
SELECT @StringToEscape = REPLACE(@StringToEscape, StringToReplace, StringReplacement)
FROM dbo.tb_StringEncoding
WHERE EncodingType = @Encoding;
RETURN @StringToEscape
END
GO

-- an example how to use it:

DECLARE @description nvarchar(256) = 'Hello \ What are you / waiting for'
SELECT dbo.fn_String_Escape(@description, 'json')

上面只是一个示例,您可能必须在上面的表格中包含控制字符等,然后在函数中循环遍历要替换的字符串 - 但至少这是一个开始。

关于sql-server - SQL Server 2012 的 STRING_ESCAPE( 'SOME TEXT' , 'json' ) 替代方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48311959/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com